递归方法,找出整数k可以表示为sum的不同方式的数量,其中每个操作数是一个小于n的整数...请帮我解决这个问题。我无法想到这个问题的递归解决方案
答案 0 :(得分: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写为整数之和&lt;并且只有一种方法是将2写为整数之和&lt; 1。 2:2 = 1 + 1。从那以后,事情变得有趣。每个整数x> 2可以写成(x-1)+ 1.因为我们正在递归,我们现在得到方式的数量,(x-1)可以写成整数之和&lt; (x-1)等。最终,我们将达到(x-n)= 2,这将返回1.
从那时起,我们向上回去,总结我们找到代表数字的方式的数量,并且瞧瞧:)