Java中的递归问题

1、递归的定义:

                                 在一个方法内部,对自身进行调用。当然,递归不会无休止地调用下去,它必然有一个出口,当满足条件时程序也就结束了,不然的话,那就是死循环了

2、地柜方法的执行过程:

                                             递归调用是指在方法执行过程中出现该方法本身的调用。

3、递归方法的典型事例:

Fibonacci(斐波那契)数列

求Fibonacci数列:1,1,2,3,5,8.......第5个数的值。数列满足递推公式:

F1 = 1, F2 = 1,Fn = Fn-1 + Fn-2  (n>2).

public class Fibonacci{
public static void main (string[] args){
System.out.println(f(5));
 }
public static int f(int n){
  if(n==1||n==2){
      return  1;
     }else{
      return  f(n-1)+f(n-2);
    }
  }
}

用图示上述代码:

对代码和图示进行解析:

首先,从main方法开始执行,然后执行f(5),5既不等于1,也不等于2,得到f(5)=f(4)+f(3);

在f(5)中对于f(4)和f(3),首先调用f(4),4既不等于1,也不等于2,得到f(4)=f(3)+f(2);

在f(4)中对于f(3)和f(2),首先调用f(3),3既不等于1,也不等于2,得到f(3)=f(2)+f(1);

在f(3)中对于f(2)和f(1),n=2、n=1,立即返回1,然后f(3),f(4),f(5)依次返回它们各自的值。

然后再调用f(5)=f(4)+f(3)中的f(3),然后立即依次返回f(1)、f(2),f(3),最后返回到f(5)

最后f(5)返回到main方法,程序结束。


  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值