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

看板Programming作者 (爽轟)時間8年前 (2016/09/13 01:08), 編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/1
之前被問到如果有一個陣列(或向量)長度為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
再寫個sw_wrapper(A) 裏面呼叫sw(A,1)
09/13 12:40, 1F

09/13 12:40, , 2F
你看資料結構教科書都是這樣
09/13 12:40, 2F

09/13 12:40, , 3F
只是他們可能取名sw()和sw_workhorse()
09/13 12:40, 3F

09/13 16:05, , 4F
原來如此~謝謝!
09/13 16:05, 4F
文章代碼(AID): #1Nrk47xd (Programming)
文章代碼(AID): #1Nrk47xd (Programming)