兔子生兔子之递归问题(递归实现斐波那契数列)

简介: 兔子生兔子之递归问题(递归实现斐波那契数列)

今天给大家带来一个经典题,斐波那契数列,题目如下:

   //题目:有一对兔子,从出生后第3个月起每个月都生一对兔子,
   //小兔子长到第三个月后每个月又生一对兔子。假如兔子都不死,要求根据输入的月份输出对应兔子的个数
   //解题思路: 月 份 :1   2  3  4  5  6  7   8   9
        //         兔子数 :1   1  2  3  5  8  13  21  34
        //  上方可以看出,是有规律可循的,第n个数 == n-1 + n-2;
        //共2种实现方式,首先展示第一种,利用数组实现
        Scanner sca = new Scanner(System.in);
        System.out.println("请输入您要查看的月数:");
        int month = sca.nextInt();
        int[] num = new int[month];
        //前两位是固定值,设置固定值
        num[0] = 1;
        num[1] = 1;
        for (int i = 2; i < num.length; i++) {
            num[i] = num[i-1] + num[i-2];
        }
        System.out.println(month + "月兔子共有:" + num[month-1] + "对");

        //第二种方式,利用递归实现,递归原理:假设输入的是5,从5开始依次往下走,再返回来,最后返回结果,类似于循环,但不是循环

        int num2 = fbnqRabbit(month);
        System.out.println("第" + month + "个月的兔子数:" + num2 + "只");

    }

    /**
     * 递归实现兔子生兔子(斐波那契数列)
     * @param month 输入的月份
     * @return 返回month对应的兔子对儿数
     */
    public static  int fbnqRabbit(int month) {
        //如果到了1或2直接返回1
        if (month == 1 || month == 2) {
            return  1;
        }
        //返回每次计算值,在本方法内完成,最后返回month月份对应的数
        return  fbnqRabbit(month - 1) + fbnqRabbit(month - 2);
    }

递归实现会有一个问题,输入50以上的数字就不能输出结果了,就算能够输出,也是非常非常慢,使用递归实现该问题如果输入数字过大可能会导致栈内存溢出,为了解决这个问题,利用数组实现,也是不错的选择,数组实现的原理,也是先将数据复制到数组内,然后输入1000不是问题,测试通过。

制作不易,望各位多多支持!!🤞💕

相关文章
|
Java
(1)剑指Offer之斐波那契数列问题和跳台阶问题
可以肯定的是这一题通过递归的方式是肯定能做出来,但是这样会有一个很大的问题,那就是递归大量的重复计算会导致内存溢出。另外可以使用迭代法,用fn1和fn2保存计算过程中的结果,并复用起来。下面我会把两个方法示例代码都给出来并给出两个方法的运行时间对比。
1723 0
汉诺塔?爬楼梯?斐波那契?知道递归就够了
汉诺塔?爬楼梯?斐波那契?知道递归就够了
115 0
|
算法
斐波那契额数列及青蛙跳台阶问题
题目:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项。  斐波那契(Fibonacci)数列定义如下: 效率很低的解法: long long Fibonacci_Solution1(unsigned int n) { if(n n; ...
872 0
LeetCode题:70爬楼梯,126斐波那契数
LeetCode题:70爬楼梯,126斐波那契数
68 0
|
人工智能
归并排序求逆序对 acwing例题代码
归并排序求逆序对 acwing例题代码
102 0
|
机器学习/深度学习 算法
蓝桥杯:递推算法 递归算法 例题:斐波纳契数列
蓝桥杯:递推算法 递归算法 例题:斐波纳契数列
87 0
|
算法
趣味算法-神奇的兔子数列
趣味算法-神奇的兔子数列
|
存储 算法
蓝桥杯:递归 与 例题:斐波那契数列及优化与应用
蓝桥杯:递归 与 例题:斐波那契数列及优化与应用
96 0

热门文章

最新文章