[問題] 一個簡單的遞回問題

作者: 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