小弟做了一个递归的题,就是求次幂的,当幂数为负数的时候,通过调试功能和一些输出项了解下递归的原理,但是看的迷茫了,请各位大侠给小弟指点下迷津:
代码如下:public class DemoVertical {
double count=0;
int num=1;
int num1=1;
int num2=1;
int num3=1;
public double power(double x,double n)
{
System.out.println("这是第"+num+"次进入power的方法");
num++;
if(n<0)
{
System.out.println("这是第"+num3+"次进入n<0的if分支语句中");
System.out.println("这是第"+num3+"次进入n>0的时候n的值为:"+n);
System.out.println("这是第"+num3+"次进入n>0的时候(-(n+1))的值为:"+(-(n+1)));
count=1/(power(x,-(n+1))*x);
System.out.println("这是第"+num3+"次进入n>0的时候count的值为:"+count);
num3++;
}
if(n>0)
{
System.out.println("这是第"+num1+"次进入n>0的if分支语句中");
System.out.println("这是第"+num1+"次进入n>0的时候n的值为:"+n);
System.out.println("这是第"+num1+"次进入n>0的时候(n-1)的值为:"+(n-1));
num1++;
count= power(x,n-1)*x;
System.out.println("这是第"+num1+"次进入n>0的时候count的值为:"+count+" n的值为:"+n);
}
if(n==0)
{
System.out.println("这是第"+num2+"次进入n=0的if分支语句中");
System.out.println("这是第"+num2+"次进入n=0的时候n的值为:"+n);
num2++;
count=1;
}
return count;
}
public static void main(String[] args)
{
DemoVertical dv=new DemoVertical();
System.out.println(dv.power(2, -3));
System.exit(0);
}就是想知道原理,这会是真的非常非常的糊涂!!!!
大侠们帮帮忙吧!!!
代码如下:public class DemoVertical {
double count=0;
int num=1;
int num1=1;
int num2=1;
int num3=1;
public double power(double x,double n)
{
System.out.println("这是第"+num+"次进入power的方法");
num++;
if(n<0)
{
System.out.println("这是第"+num3+"次进入n<0的if分支语句中");
System.out.println("这是第"+num3+"次进入n>0的时候n的值为:"+n);
System.out.println("这是第"+num3+"次进入n>0的时候(-(n+1))的值为:"+(-(n+1)));
count=1/(power(x,-(n+1))*x);
System.out.println("这是第"+num3+"次进入n>0的时候count的值为:"+count);
num3++;
}
if(n>0)
{
System.out.println("这是第"+num1+"次进入n>0的if分支语句中");
System.out.println("这是第"+num1+"次进入n>0的时候n的值为:"+n);
System.out.println("这是第"+num1+"次进入n>0的时候(n-1)的值为:"+(n-1));
num1++;
count= power(x,n-1)*x;
System.out.println("这是第"+num1+"次进入n>0的时候count的值为:"+count+" n的值为:"+n);
}
if(n==0)
{
System.out.println("这是第"+num2+"次进入n=0的if分支语句中");
System.out.println("这是第"+num2+"次进入n=0的时候n的值为:"+n);
num2++;
count=1;
}
return count;
}
public static void main(String[] args)
{
DemoVertical dv=new DemoVertical();
System.out.println(dv.power(2, -3));
System.exit(0);
}就是想知道原理,这会是真的非常非常的糊涂!!!!
大侠们帮帮忙吧!!!
{
count= power(x,n-1)*x;
}
if(n==0)
{
count=1;
}
先要弄明白的是这两句。把num有关的以及控制台输出的都删掉,看看还有哪里看不懂的。
实在不行,不妨自己按着程序计算几个实例,如power(2,5),一步步把计算的过程列出来,就明白啦