作者songhome (爽轰)
看板Programming
标题[问题] 一个简单的递回问题
时间Tue Sep 13 01:08:21 2016
之前被问到如果有一个阵列(或向量)长度为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
有没有甚麽办法能够解决呢~谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.162.210.44
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Programming/M.1473700103.A.EE7.html
1F:→ MOONRAKER: 再写个sw_wrapper(A) 里面呼叫sw(A,1) 60.248.110.133 09/13 12:40
2F:→ MOONRAKER: 你看资料结构教科书都是这样 60.248.110.133 09/13 12:40
3F:→ MOONRAKER: 只是他们可能取名sw()和sw_workhorse() 60.248.110.133 09/13 12:40
4F:→ songhome: 原来如此~谢谢!111.248.186.128 09/13 16:05