Re: [問題] 請教一個題目的遞迴解法
※ 引述《cismjmgoshr (--???--)》之銘言:
: a1=1
: a2=1+(1+2) 差1+2
: a3=1+(1+2)+(1+2+3) 差1+2+3
: 如果把(1+2+3+...)也寫成遞迴
: int recur(int i,int j)
: {
: if(i==0)
: return 0;
: else if(j==0)
: return recur(i-1,i-1);
: else
: return j+recur(i,j-1);
: }
: a_n = recur(n,n);
: ....不過這樣寫不會比迴圈解快吧
: 純粹練習用嗎?
其實...
T(n) = (n+1)*n/2 + T(n-1)
T(1) = 1
這樣不是更簡單嗎?...
(本來直接寫了 code, 後來還是覺得不寫出來比較好一點)
int foo(int i) {
if (i == 0) {
return 1;
}
return (i+1)*i/2 + foo(i-1);
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 202.155.236.82
※ 編輯: adrianshum 來自: 202.155.236.82 (02/11 14:20)
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章