任何人都可以得到这个等式吗?我不能
class Calculator {
public int count = 0;
public void calc(int n, int p) {
count++;
if (p>n) return;
for (int i=0; i<n; i++) {
calc(n, p+1);
}
}
}
// int n is input by keyboard
Calculator c = new Calculator();
c.calc(n, 0);
System.out.println(c.count);
任何有等式或任何信息的人?
答案 0 :(得分:2)
count
递增一次然后计算称为n
次,由于1 + n
测试,这会递归p > n
次。顺便说一句,如果它是p >= n
,它会递归n
次。
等式是
1 + n * (1 + n * ... (1 + n))
表达式1 + n
出现1 + n
次。
e.g。 calc(3,0)= 121 =
1 + 3 * (1 + 3 * (1 + 3 * (1 + 3)))
答案 1 :(得分:0)
我想这会打电话给
calc(n, 1); // this tree will appear n times
calc(n, 2); // this tree will appear n times
calc(n, 3) // this tree will appear n times
.
.
calc(n, n+1) // this call will appear n times
calc
的每次调用都会增加count
。计算调用次数相当于计算高度为n+2
的完整n元树的节点数(此树的根表示调用c.calc(n, 0)
)。所以我认为解决方案是
count = n^0 + n^1 + n^2 + ... + n^n + n^(n+1)