public static int exponent(int baseNum) {
int temp = baseNum *= baseNum;
return temp * exponent(baseNum);
}
现在,如果我进行调试,上面的方法将N * n变成无限,因此它仍然有效,但是我需要这种递归方法在10次之后停止,因为我的教练要求我们找到指定的指数。<<<</p>
该方法只有一个参数,以下是调用指数的一些示例:
System.out.println ("The power of 10 in " + n + " is " +
exponent(n));
因此,输出应为:
The power of 10 in 2 is 1024
或
The power of 10 in 5 is 9765625
做
之类的事情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));
}
不要忘记基本情况(即条件),该情况告诉何时停止递归并从堆栈中弹出值。
创建辅助方法来执行递归。它应该有两个参数:基础和指数。将其称为指数为10的值,并以(exponent-1)重复。基本情况是exponent == 0
,在这种情况下应该返回1.(您也可以将exponent == 1
用作基本情况,在这种情况下应返回基础。)
以下是我的讲师Penn Wu教授在演讲中提供的。
公共类Exp
{
公共静态int指数(int a,int n)
{
if(n == 0){返回1;}//基础
else//递归
{
a *=指数(a,n-1);
返回a;
}
}
公共静态void main(string [] args)
{
system.out.print(endent(2,10));
}
}
是否应该有2个参数并处理下面的退出条件?
public static int exponent(int baseNum, int power) {
if(power == 0){
return 1;
}else{
return baseNum * exponent(baseNum, power-1);
}
}
对于递归功能,我们需要:
- 检查停止条件(即exp是0时,返回1)
- 用调整状态(即基本 * base^(n-1))呼叫自己
这是代码。
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));
}
}
别忘了,对于每个递归功能,您都需要一个基本情况。停止条件静态双R2(浮子基座,int n) {
if (n<=0) return 1;
return base*r2(base,n-1);
}
我偶然地来到这里,我认为可以做得更好,因为人们很容易弄清楚,如果Exp是x^2n = x^n * x^n =(x)^2)^n,因此,您可以只计算X X,然后调用具有N递归和产品的POW(X,N)。相反,如果功率是奇数的,那么我们只是做X pow(x,n-1),然后再使力量再次发挥作用。但是,一旦N-1即使,我们都可以直接编写X pow(x X,(N-1)/2)添加额外的产品并使用与偶数相同的代码指数。
int pow_( int base, unsigned int exp ) {
if( exp == 0 )
return 1;
if( exp & 0x01 ) {
return base * pow_( base*base, (exp-1)/2 );
}
return pow_( base*base, exp/2 );
}