2012-09-08 58 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有没有限制? –