什么是递归以及斐波那切数列、猴子吃桃

17 篇文章 0 订阅
10 篇文章 0 订阅
什么是递归

递归,就是在运行的过程中不断地调用自己。递归有两个过程,简单地说一个是递的过程,一个是归的过程。

递归

递归调用的重要规则](https://img-blog.csdnimg.cn/8989780da8114e448c3ab201f35a1336.png)

斐波那切数列

斐波那切数列:1,1,2,3,5,8,13 ··· 。给你一个整数 n

思路分析

1, 当 n = 1 时,斐波那切数 是 1
2. 当 n = 2 时,斐波那契数 是 1
3. 当 n >= 3 时,斐波那契数 是前两个数的和
4. 这里就是一个递归的思路

public class Main {
    public static void main(String[] args) {
        T t1 = new T();
        int n = 7;
        int res = t1.fibonacci(n);
        if(res != -1){
            System.out.println("当 n=" + n + "对应的斐波那切数=" + res);
        }
    }

}
public class T {
    public int fibonacci(int n){
        if (n >= 1) {
            if (n == 1 || n == 2) {
                return 1;
            } else {
                return fibonacci(n - 1) + fibonacci(n - 2);
            }
        } else {
            System.out.println("要求输入的 n >= 1 的整数");
            return -1;
        }
    }
}

猴子吃桃

有一堆桃子,猴子第一天吃了其中的一半,并再多吃了一个,以后每天猴子都吃其中的一半,然后再多吃一个。当到第十天时,再想吃时(还没有吃),发现只有一个桃子了。问:最初共有多少个桃子?

思路:逆推
  1. day = 10 时 , 有 1 个桃子
  2. day = 9 时 , 有 (day10 + 1)* 2 = 4 个桃子
  3. day = 8 时 , 有 (day9 + 1)* 2 = 10 个桃子
    规律:前一天的桃子数 = (后一天的桃子数 + 1)* 2
    可以使用递归进行处理
代码
package Recursion;

public class Hzct {
    public static void main(String[] args) {
        Hzct t = new Hzct();
        int day = 1;
        int peachNum = t.peach(day);
        if (peachNum != -1) {
            System.out.println("第" + day + "天有" + peachNum + "个桃子");
        }
    }
    public int peach(int day) {
        if (day == 10) {
            return 1;
        } else if (day >= 1 && day <= 9) {
            return (peach(day + 1) + 1) * 2;
        } else {
            System.out.println("输入正确的天数:1——10");
            return -1;
        }
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值