Java的递归

递归在我们写代码中会经常用到,今天我们来讲解一下递归的本质意义。

其实很明显,这个词语就包含了两个意思,一个是“递”,一个是“归”,这两个动词组成了递归的完美实现。

我们通过一个例子来讲一下:斐波那契数列(兔子数列)

这个数列相信大家有所耳闻,斐波那契数列是指这样一个数列:1,1,2,3,5,8,13,21,34,55,89……这个数列从第3项开始 ,每一项都等于前两项之和

首先我们在代码里面创建一个方法(fib)代表斐波那契额数列。

public static int fib(int n){
    if (n == 1||n == 2){
        return 1;
    }
    return fib(n - 2)+fib(n - 1);

}

这就是斐波那契数列的方法,下面我们一步一步来看,怎么样实现了递归:

1,首先int fib(int n)

2,确定起始条件(其实我们说的起始条件,最终就是终止条件,递归就是通过判断是否起始条件=终止条件来中止这一递归的进程)起始条件就是if (n == 1||n == 2) return 1;   

3,写出通项公式:fib(n - 2)+fib(n - 1)其实通项公式我们从斐波那契的定义里也能提取出来,就是除前两项外,任何一项都等于前两项之和

举个例子:假如n=3,进入这个方法,因为n=3,所以进入return fib(n - 2)+fib(n - 1);也就是fib(1)+fib (2)然后这个fib(1)和fib(2)重新再进入方法,那么此时我们发现n=1  , n=2,所以return  1,从而完成了此次方法。那么在这个过程中哪些是“”,哪些是“”呢?

当n=3进入fib然后进行return时,其实就是完成了“”,当重新进入方法然后return 1时就完成了“

以上就是对于递归的理解,欢迎大家留言,如有不当之处,欢迎批评指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值