当前位置: 代码迷 >> J2SE >> 以下程序是怎么实现递归的
  详细解决方案

以下程序是怎么实现递归的

热度:202   发布时间:2016-04-24 15:30:06.0
以下程序是如何实现递归的
class   Test{
static   int   value=1;

static   int   f   (int   n   ){
int   temp=0;


if(n==0||n==1)

return   n;



else{
System.out.println( "n= "+n);
temp=f(n-1)+f(n-2);

if(temp> value){
System.out.println(value+ "   ");

value=temp;
}

      System.out.println( "temp=   "+temp);
return   temp;



}






}


public   static   void   main(String[]   a){


System.out.println( "0   1 ");

      f(7);




}
}

------解决方案--------------------
斐波那契数列
temp = f(n - 1) + f(n - 2);


一个数等于前2个数的和
f(n)=f(n - 1) + f(n - 2);
f(n - 1)=f(n - 2)+f(n - 3)
f(n - 2)=f(n - 3);+f(n - 4);

直到n=1


------解决方案--------------------
这个输出的规律在于从第三个数开始....每个数都是前两个之和

斐波那契数列在现实中应用还是蛮广的
------解决方案--------------------
febbonacci前两项不是应该都是1吗?
1,1,2,3,5,8,13,21
------解决方案--------------------

0 1
n=7
n=6
n=5
n=4
n=3
n=2
temp= 1
1
temp= 2
n=2
temp= 1
2
temp= 3
n=3
n=2
temp= 1
temp= 2
3
temp= 5
n=4
n=3
n=2
temp= 1
temp= 2
n=2
temp= 1
temp= 3
5
temp= 8
n=5
n=4
n=3
n=2
temp= 1
temp= 2
n=2
temp= 1
temp= 3
n=3
n=2
temp= 1
temp= 2
temp= 5
8
temp= 13
------解决方案--------------------
else{
System.out.println( "n= "+n);
temp=f(n-1)+f(n-2);


这个不就是递归吗?就是前2个数的和

if(n==0||n==1)

return n;

前2项在这写的
  相关解决方案