[问题] 一个简单的递回问题

楼主: songhome (爽轰)   2016-09-13 01:08:21
之前被问到如果有一个阵列(或向量)长度为n
要设计一个函数可以让里面元素反转 如(1,2,3,4,5) > (5,4,3,2,1)
(假设这个阵列第一个位置是1不是0)
我原本是设计一个函数用循环的方式从
1跑到n/2 然后从左边数过来第i个跟右边数过来第i个互换
可是后来想说不知道有没有递回的方式可以完成就重新写了一个
re=function(A,i){
n=length(A)
if(i<=n/2){
temp=A[i]
temp2=A[n-(i-1)]
A[n-(i-1)]=temp
A[i]=temp2
re(A,i+1)
}else{
return(A)
}
}
这样的函数,A是要转换的向量
测试一下sw(A,1)是可正常执行且得到我要的结果的
但仔细想一下这个函数原始的目的是反转
理论上这个函数应该不需要打引数1才对
可是在这个递回函数中又不能一开始不打1
有没有什么办法能够解决呢~谢谢

Links booklink

Contact Us: admin [ a t ] ucptt.com