看板 java 關於我們 聯絡資訊
我練習了幾個遞迴程式 其中有個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
LPH66:請正確的把 ans 初始化... 03/26 16:57
lovinalizee:樓上 可以點出來嗎??我也找不到耶!謝謝~ 03/26 23:36
tkcn:你的公式是不是怪怪的呀..? 03/27 00:00
LPH66:to 樓上 他的公式 index off by 1 不過總的來說是對的 03/27 00:22
LPH66:to 原PO&二樓 要用迴圈連加請在連加前把變數歸0... 03/27 00:24