public static int exponent(int baseNum) {
int temp = baseNum *= baseNum;
return temp * exponent(baseNum);
}
现在,如果我调试它,上面的方法会将n * n转换为无穷大,所以它仍然可以工作,但是我需要这个递归方法在10次后停止,因为我的教师要求我们找到给定幂10的指数。 / p>
该方法必须只有一个参数,这里是一些调用指数的例子:
System.out.println ("The power of 10 in " + n + " is " +
exponent(n));
所以输出应该是:
The power of 10 in 2 is 1024
OR
The power of 10 in 5 is 9765625
答案 0 :(得分:3)
执行类似
的操作public static int exp(int pow, int num) {
if (pow < 1)
return 1;
else
return num * exp(pow-1, num) ;
}
public static void main (String [] args) {
System.out.println (exp (10, 5));
}
并且不要忘记基本情况(即条件),它告诉何时停止递归并从堆栈中弹出值。
答案 1 :(得分:1)
以下是我的导师吴教授在他的讲义中提供的内容。
public class Exp
{
public static int exponent(int a, int n)
{
if (n==0) { return 1; } // base
else // recursion
{
a *= exponent(a, n-1);
return a;
}
}
public static void main(String[] args)
{
System.out.print(exponent(2, 10));
}
}
答案 2 :(得分:0)
创建一个辅助方法来进行递归。它应该有两个参数:base和exponent。为指数调用值10,并使用(exponent-1)递归。基本情况是exponent == 0
,在这种情况下它应该返回1.(您也可以使用exponent == 1
作为基本情况,在这种情况下它应该返回基数。)
答案 3 :(得分:0)
它不应该有2个参数并处理下面的退出条件吗?
public static int exponent(int baseNum, int power) {
if(power == 0){
return 1;
}else{
return baseNum * exponent(baseNum, power-1);
}
}
答案 4 :(得分:0)
对于递归函数,我们需要:
这是代码。
public class Test
{
public static int exponent(int baseNum, int exp)
{
if (exp<=0)
return 1;
return baseNum * exponent(baseNum, --exp);
}
public static void main(String a[])
{
int base=2;
int exp =10;
System.out.println("The power of "+exp+" in "+base+" is "+exponent(base,exp));
}
}
答案 5 :(得分:0)
不要忘记,对于每个递归函数,您需要一个基本案例。停止条件` static double r2(float base,int n) {
if (n<=0) return 1;
return base*r2(base,n-1);
}