递归--java进阶day08

1.递归

2.案例

1.案例一

求出5的阶乘

我们会发现其中存在规律

我们先定义一个带返回值的方法,方便调用者使用

当给的数是1时,1的阶乘还是1,我们就可以直接返回

如果走了else,说明给的数不是1,那么我们就先假设要求的是5的阶乘

根据上图中的规律,我们可以知道求5!就是求5*4!,但是4!又该怎么求?

很简单,调用我们现在写的方法,我们现在写的方法不就是求阶乘的方法吗,那么使用递归调用就行了

我们不能将参数写死,所以优化代码


.

内存图详解

https://kdocs.cn/l/ctKEOXcEUXZx?linkname=150996947

2.案例二

斐波那契数列

第一个月有一对小兔子,第二个月小兔子长成大兔子,第三个月,根据题意,大兔子可以生一对小兔子,第四个月,大兔子又生了一对小兔子,然后之前的小兔子长成了大兔子
.

不断推导下去,我们会发现一个规律

定义一个方法,用于上图案例,其中参数是月份,第一二月对应的兔子对数都为1,所以直接返回

走了else,说明是第三个月之后

兔子对数是从第三个月开始,前两个月的对数相加


.

3.案例三

根据题意,我们应该反着推。每天都吃一半,然后多吃一个,说明是二分之一,然后再减一

那么,我们就可以知道,前一天的桃子数量是加1再乘2,得出规律

.

.

posted @ 2025-03-22 10:26  直実  阅读(6)  评论(0)    收藏  举报