小弟做了一个递归的题,就是求次幂的,当幂数为负数的时候,通过调试功能和一些输出项了解下递归的原理,但是看的迷茫了,请各位大侠给小弟指点下迷津:
代码如下: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);
}就是想知道原理,这会是真的非常非常的糊涂!!!!
大侠们帮帮忙吧!!!

解决方案 »

  1.   

            if(n>0)
            {
                count= power(x,n-1)*x;
            }
    if(n==0)
            {
                count=1;
            }
    先要弄明白的是这两句。把num有关的以及控制台输出的都删掉,看看还有哪里看不懂的。
      

  2.   

    这好像没什么难理解吧~~
    实在不行,不妨自己按着程序计算几个实例,如power(2,5),一步步把计算的过程列出来,就明白啦
      

  3.   

    递归的东西很基础,最合适的讲解是有人拿一张纸一支笔在你面前演示一遍过程,很容易就说明白了。bbs还是有些局限。具体哪里不懂,把问题说清楚来吧。