我想寫Catalan數 .Catalan數字被定義如下代碼:我的加泰羅尼亞號碼邏輯有什麼問題?
C(n) = 2n C n/(n+1)
。但是,而不是計算(2n C n)
我想計算Catalan數自下而上使用以下事實:
Catalan(n) =
2n! /n! * n! * (n+1)
Catalan(n+1) =
2*(n+1)
--------------------------- =
(n+1)! * (n+1)! * ((n+1)+1)
(2n+2) * (2n+1) * 2n!
------------------------------- =
(n+1) * n! * (n+1) * n! * (n+2)
(2n+2) * (2n+1) * 2n!
----------------------------------- =
(n+1) * (n+2) * n! * n! * (n+1)
(2n+2) * (2n+1)
--------------- * Catalan(n)
(n+1) * (n+2)
現在利用上述事實,這是我下面的代碼:
int catalan(int n)
{
if (n == 1)
return 1 //since c(1)=1 is my base case
else
return (((2*n+2) * (2*n+1))/((n+1)*(n+2))) * catalan(n-1)
}
現在,我的問題是,爲什麼當我的輸入是4時,上述函數返回12,它應該返回14,因爲c(4)= 14。
任何人都可以幫助我嗎?
什麼是(2n C n)應該是什麼意思? – 2011-04-19 14:09:43
@Jens Schauder binomal coeffiecnt:2n over n – Chris 2011-04-19 14:12:42