[問題] 遞迴程式的問題

看板java作者 (gn02325403)時間14年前 (2011/03/26 15:27), 編輯推噓3(302)
留言5則, 3人參與, 最新討論串1/1
我練習了幾個遞迴程式 其中有個Catalan number 的練習 Catalan number本身遞迴的定義是 n-1 P(N) = Σ P(k)*P(n-k) n>=3 k=1 P(2)=1 P(1)=1 程式算到P(5)都還是正確的 但P(6)就錯誤了 當然後面就跟著錯 看了很久還是看不出癥結所在 因此上來求救 遞迴部分的程式碼如下 public static int matrix(int n) { if (n==1 || n==2) { return 1;//這是P(1)和P(2)的情況 } else { for(int k = 1;k<=(n-1);k++) { ans = (matrix(k) * matrix(n-k))+ans;//遞迴的部分 } ans1 = ans;//ans是暫存用 ans1是最後要回傳的答案 ans = 0; return ans1; } } 麻煩各位了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.178.19

03/26 16:57, , 1F
請正確的把 ans 初始化...
03/26 16:57, 1F

03/26 23:36, , 2F
樓上 可以點出來嗎??我也找不到耶!謝謝~
03/26 23:36, 2F

03/27 00:00, , 3F
你的公式是不是怪怪的呀..?
03/27 00:00, 3F

03/27 00:22, , 4F
to 樓上 他的公式 index off by 1 不過總的來說是對的
03/27 00:22, 4F

03/27 00:24, , 5F
to 原PO&二樓 要用迴圈連加請在連加前把變數歸0...
03/27 00:24, 5F
文章代碼(AID): #1DZPLbDl (java)