【发布时间】:2015-03-23 23:39:29
【问题描述】:
以下递归代码用于计算可以对给定数字求和的不同可能方式。
输入:4
输出: 1111 112 121 112 22 13 31 4 有 8 (2^(n-1)) 种不同的方法可以得到 4。
我想知道这个算法的大 O 复杂度是多少?我很欣赏处理递归算法的基本思维过程。另一个问题,为什么路数是 2^(n-1)?我无法从算法中弄清楚这一点。非常感谢你们!
public static int recursive(int n, String out){
int count=0;
if (n==0) {
System.out.println(out);
return 1;
} else if (n>0) {
for (int i=1; i<=n; i++){
count+=recursive(n-i, out+" "+Integer.toString(i));
}
return count;
} else {
return 0;
}
}
【问题讨论】:
标签: recursion big-o complexity-theory