java有人能解释一下这个递归问题吗?问题解决了吗?
Given base and n that are both 1 or more, compute recursively (no loops) the value of base to the n power, so powerN(3, 2) is 9 (3 squared).
答案是
public int powerN(int base, int n) {
if(n == 1)
return base;
return base * powerN(base, n - 1);
}
我很困惑,因为当我看这个的时候,这不是说用powerN()
的返回数乘以基数吗
powerN(3,3);
= 3
= 3*powerN(base, n-1) = 6
= 3*powerN(base, n-1) = 9
哪个乘以9*6*3
我不明白为什么我们必须用函数乘以基数
该方法是否应该只返回答案,因为基类永远不会更改,并且一旦n==1
基类执行时,该方法是否应该返回答案
# 1 楼答案
让我们像你一样计算powerN(3,3)
powerN(3,3) = 3 * powerN(3,2)
3 * powerN(3,2) = 3 * 3 * powerN(3,1)
3 * 3 * powerN(3,1) = 3 * 3 * 3 = 27
所以你的计算方法是错误的
# 2 楼答案
假设我们有
powerN(2,3)
所以
就这样