2012-09-08 57 views
0

遞歸方法查找整數k可以表示爲sum的不同方式的數量,其中每個操作數都是小於n的整數...請幫助我使用算法。我不能遞歸執行

回答

1

基本上認爲遞歸解決的這個問題,我的第一個想法是以下幾點:

int numberOfWays(int x) 
{ 
    if(x <= 1) 
     return 0; 
    if(x == 2) 
     return 1; 
    // else: 
    int res = 0; 
    int i; 
    for(i = 1; i <= x/2; i++) 
     res += numberOfWays(x - i); 
    return res; 
} 

我要去給它一對夫婦的測試和想法,但僅此它。

的解釋也許幾句話......

顯然,沒有寫1的整數< 1的總和的方式,並有寫2的整數< 2的總和只有一條路:2 = 1 + 1.

從那裏開始,事情變得有趣。每個整數x> 2可以寫成(x-1)+1。因爲我們遞歸,所以我們現在得到方法的數量,(x-1)可以寫成整數和<(x-1)上。最終,我們將達到(XN)= 2,這將從那裏返回1

,我們回去向上,總結我們發現代表數字的路數,瞧:)

+0

請糾正我,如果即時通訊錯了...不應該函數的數字有2個輸入參數K和N ... – rohangulati

+0

@ user1640967哦,我完全誤讀了這個問題。 :/我認爲n和k是相同的數字。 k和n有沒有限制? –