程序分析:这个实例是非常经典的实例,主要是利用递归实现了Fibonacci数列。这个递归算法的出口是在

  [java] view plaincopyprint?

  if(index==1 || index==2){

  return 1;

  }

  if(index==1 || index==2){

  return 1;

  }

  这个代码段上,如果程序的index符合条件会停止进行递归。所以这个程序的运行流程是:

  刚才说了这个方法十几度危险的,为什么这么说,原因在于在这个递归里做了冗余的工作,如图,我们在f4里面已经计算了f2,可是f3里有同样计算了f2,以此类推那些冗余的工作,在数值比较小的情况下,计算机还是可以接受的。但是,当求解的数值比较大,它是成指数级增长的,所以不要再递归中做重复的工作。

  ②n的阶乘

  问题描述:求5的阶乘

  求解代码:

  [java] view plaincopyprint?

  public class Factorial_Five {

  /**

  * time:2012.12.2

  * author:王金宇

  * description:递归求n的阶乘

  */

  public static void main(String[] args) {

  Factorial_Five factorial_Five=new Factorial_Five();

  int result=factorial_Five.factorial(5);

  System.out.println(result);

  }

  public int factorial(int index){

  if(index==1){

  return 1;

  }else{

  return factorial(index-1)*index;

  }

  }

  }

  public class Factorial_Five {

  /**

  * time:2012.12.2

  * author:王金宇

  * description:递归求n的阶乘

  */

  public static void main(String[] args) {

  Factorial_Five factorial_Five=new Factorial_Five();

  int result=factorial_Five.factorial(5);

  System.out.println(result);

  }

  public int factorial(int index){

  if(index==1){

  return 1;

  }else{

  return factorial(index-1)*index;

  }

  }

  }