java中的不死兔问题(斐波那契数列)(递归思想)

有一对兔子,从出生后第3个月起每个月都生一对兔子,
小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

public class Item {

    public static void main(String[] args) {

        // 不死兔问题
        System.out.println(rabbit(3));

    }

    public static int rabbit(int m) {
            if(m <= 0) {
                System.out.println("输入错误!没有此月份");
                return -1;
            }
            else if(m == 1 || m == 2) {
                return 2 * 1;
            }
            else{
                int k = (rabbit(m - 1) + rabbit(m - 2));
                return k ;
            }
    }

原文地址:https://www.cnblogs.com/psy-code/p/8570643.html

时间: 2024-10-10 00:39:38

java中的不死兔问题(斐波那契数列)(递归思想)的相关文章

JAVA基本算法面试题:1斐波纳契数列

开始学习JAVA,基础知识恶补! 斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1.1.2.3.5.8.13.21.……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*). 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 以下是Java代码实现(递归与递推两种方式): import java.util.Scanner;

PHP_I love U之(2)php衣食父母: Java与PHP效率比拼之一:斐波那契数列

PHP_I love U之(1)php衣食父母: Java与PHP效率比拼之一: 斐波那契数列 Fibonacci 解释见:http://zh.wikipedia.org/wiki/%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0%E5%88%97 ( 应该是1 , 维基的公式错了!?!) (n≧2) 这次先写 Java的代码: class fb { static int f1b (int x) { if ((0==x)||(1==x) ) {  ret

DP思想在斐波那契数列递归求解中的应用

斐波那契数列:1, 1, 2, 3, 5, 8, 13,...,即 f(n) = f(n-1) + f(n-2). 求第n个数的值. 方法一:迭代 public static int iterativeFibonacci(int n) { //简单迭代 int a = 1, b = 1; for(int i = 2; i < n; i ++) { int tmp = a + b; a = b; b = tmp; } return b; } 方法二:简单递归 public static long

斐波那契数列递归内存溢出如何解决

斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........某一项是前两项的和.使用递归调用时前四十项求解没有问题,但到底五十项的时候会出现内存溢出,求不出结果.所以要想求出更多的项必须使用非递归的方法求解,数据类型不能再是int,可以为double. 1.内存溢出的实例 package test.only

斐波那契(递归思想)跳台阶

题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 对于第n个台阶来说,只能从n-1或者n-2的台阶跳上来,所以 F(n) = F(n-1) + F(n-2) 斐波拉契数序列,初始条件 n=1:只能一种方法 n=2:两种 递归一下就好了 public class Solution {    public int JumpFloor(int target) {        if(target <= 0)            return 0; 

剑指offer-矩形覆盖-斐波那契数列(递归,递推)

class Solution { public: int rectCover(int number) { if(number==0 || number==1||number==2) return number; return rectCover(number-1)+rectCover(number-2); } }; *******************************************************************************************

斐波那契数列 递归 尾递归 递推 C++实现

==================================声明================================== 本文原创,转载请注明作者和出处,并保证文章的完整性(包括本声明). 本文不定期修改完善,为保证内容正确,建议移步原文处阅读. 本文链接:http://www.cnblogs.com/wlsandwho/p/4205524.html ===============================================================

斐波那契数列递归的时间复杂度

f(n)=f(n-1)+f(n-2) 二阶常系数差分方程,解得: 当n趋于无穷大,后面的加数趋于0,则约等于O(1.618^n),即如O(2^n)级别 其实可以树状展开看下,顶层是f(n),之后每层翻倍,则所有子节点的和约为2^n级别,但不会满二叉,所以比这小点. 原文地址:https://www.cnblogs.com/willaty/p/11396840.html

java输出斐波那契数列

题目要求:编写程序在控制台输出斐波那契数列前20项,每输出5个数换行 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列",指的是这样一个数列:1.1.2.3.5.8.13.21.34.--在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*) //Java编程:三种