public static void powerNum(int n,int x,int t) {
int i = 1;
if(x>i){
i++;
powerNum(n,x,t);
}
else{
System.out.println(n);
}
}
这是我到目前为止所做的。我认为它是正确的,但我不断收到堆栈溢出错误,并记住。它必须是递归的!请提供完整的答案。
答案 0 :(得分:2)
您没有将i
传递给下一个函数调用,并且始终将i
初始化为1
,因此条件if(x>i)
始终为true,前提是{{1} }不止一个。在x
中,您有一个递归调用:
if
这将导致无限递归。同样,您永远不会更改或使用if(x>i){
i++;
powerNum(n,x,t);
}
,n
或x
的值。
以下是一些伪代码可以帮助您:
t
唯一的问题是accept three parameters: base, power, and result
if the power less than one
print the result
else
multiply the result by the base
recursive call passing base, power-1, and result
始终需要作为一个整体传递,这非常不方便。您可以创建一个仅接受基数和幂的重载函数,然后调用原始的result
函数,并传递powerNum
作为结果:
1
答案 1 :(得分:0)
private static int powerNum(int n, int x) {
if(x == 0) {
return 1;
}
else {
return n* powerNum(n, x-1);
}
}
我认为您正在寻找这个街区?