[問題] 一個簡單的遞回問題
之前被問到如果有一個陣列(或向量)長度為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://www.ptt.cc/bbs/Programming/M.1473700103.A.EE7.html
→
09/13 12:40, , 1F
09/13 12:40, 1F
→
09/13 12:40, , 2F
09/13 12:40, 2F
→
09/13 12:40, , 3F
09/13 12:40, 3F
→
09/13 16:05, , 4F
09/13 16:05, 4F
Programming 近期熱門文章
PTT數位生活區 即時熱門文章