看板 Programming 關於我們 聯絡資訊
之前被問到如果有一個陣列(或向量)長度為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
MOONRAKER: 再寫個sw_wrapper(A) 裏面呼叫sw(A,1) 60.248.110.133 09/13 12:40
MOONRAKER: 你看資料結構教科書都是這樣 60.248.110.133 09/13 12:40
MOONRAKER: 只是他們可能取名sw()和sw_workhorse() 60.248.110.133 09/13 12:40
songhome: 原來如此~謝謝!111.248.186.128 09/13 16:05