`

Java 兔子繁殖迭代问题

阅读更多
某农场引进一只兔子,该兔到了第3个月就会产下一只小兔,从此之后每月产下一只小兔。而小兔也一样,到了出生后的第三个月也会产下一只小兔,之后每个月都会产下一只小兔,以此类推, 8个月后这个农场一共有多少只兔子?(使用递归算法)

斐波那奖数列:

1,1,2,3,5,8,13,21,34,55,89,144,233,377......


其规律是从第三项起,每一项都是前两项的和.用递推公式表达就是:

a1=a2=1,
an=an+1十an-2(n>=3)
将值带入公式an=an+1十an-2(n>=3)

能这样递归是这些兔子的生产规律都是一致的

刚出生的子兔和刚出生的父兔的家族树是相似的
而第二个月的父兔撤掉他第三个月新生子兔那一个分支后家族树与前两者也是相似的,因此:
三者都可以用同一计算种群数量计算法则
con(n) = con(n - 1) + con(n - 2)    (n>=2)

画个家族树图谱就会很清楚了,有空补上



参数的区别揭示了不同“月龄”的兔子,但未必是不同的兔子,时间是同一参照标准,比如n

运算法则相同不用多说了,剩下为什么是相加的逻辑,是子树所有叶子总和即母树所有叶子数量

时间标准是相同的,对于母树( con(n) )第三个月,对其最小子树( con(n-2) )而言,即第一月,产出量只为1
public class Test {
	public static int con(int n) {
		if (n > 2) {
			return con(n - 1) + con(n - 2);
		}
		return 1;
	}

	public static void main(String[] args) {
		System.out.println(con(8));
	}
}


能这样递归是这些兔子的生产规律都是一致的

刚出生的子兔和刚出生的父兔的家族树是相似的
而第二个月的父兔撤掉他第三个月新生子兔那一个分支后家族树与前两者也是相似的,因此:
三者都可以用同一计算种群数量计算法则
con(n) = con(n - 1) + con(n - 2)    (n>=2)

画个家族树图谱就会很清楚了,有空补上



参数的区别揭示了不同“月龄”的兔子,但未必是不同的兔子,时间是同一参照标准,比如n

运算法则相同不用多说了,剩下为什么是相加的逻辑,是子树所有叶子总和即母树所有叶子数量

时间标准是相同的,对于母树( con(n) )第三个月,对其最小子树( con(n-2) )而言,即第一月,产出量只为1







这是十个月之后的兔子总数
package com.string.to;

public class TuZI {
	public static void main(String args[]){
		int m=1,n=1,tmpN;//声明3个变量(int类型的 )
		for(int month=3;month<=10;month++){ 
		tmpN=n;//让tmpN=n,也就是1
		n=m+n;//然后让m和n相加,既n=1+1=2;
		m=tmpN;//然后再把tmp的值1付给m,既m=2
		} //继续循环
		System.out.println(n); 

	}

}






下面是我自己写的:
package com.string.to;

public class MyRabbit {
	public static void main(String args[]){
		System.out.println(new MyRabbit().sum(12));
	}
	public static int sum(int n){
		if(n>2){
			return sum(n-1)+sum(n-2);
		}
		return 1;
		
	}

}

分享到:
评论

相关推荐

    java笔试算法题40道

    兔子繁殖问题(斐波那契数列) #### 解题思路与代码实现 - **问题描述**:一对兔子从第三个月开始每个月都会产下一对新兔子,而新生的兔子会在第四个月开始也每个月产下一对兔子。假设所有兔子都不会死亡,求每个...

    java面试题带答案

    - 题目描述了一个经典的斐波那契数列问题,即兔子繁殖问题。每对兔子从第三个月开始每月生一对新兔子,求每个月兔子的总数。 - 解决方案:使用循环和临时变量计算每个后续月份的兔子数量。在Java代码中,`f1` 和 `...

    Java经典问题算法大全

    这个问题源于一个经典的数学问题,即兔子繁殖问题。通过模拟兔子繁殖的过程来生成一个数列,这个数列即是著名的斐波那契数列。这个问题不仅能够帮助理解递归关系和数列的概念,而且对于学习如何实现循环结构以及数组...

    java 精选五十题

    1. **古典问题:兔子繁殖问题(菲波拉契数列)** 这个程序模拟了一对兔子每月生育后代的情况,遵循菲波拉契数列的规律。每对兔子在第三个月开始生育,每个新生成的兔子夫妇在第三个月也开始生育。菲波拉契数列的...

    最新JAVA编程题全集

    【程序1】中展示了一个简单的Java程序,用于计算兔子繁殖问题的答案。程序使用了一个for循环,从第3个月开始到用户指定的月份M,循环体内计算每个月的兔子对数,并打印出来。程序中定义了三个整型变量f1、f2和f,...

    Java经典问题算法大全[归纳].pdf

    1. **兔子繁殖问题(斐波那契数列)**: - 题目描述了一个兔子繁殖模型,兔子从第三个月开始每月生一对兔子,每对新生兔子从下个月开始也按照同样的规则繁殖。 - 这个问题可以通过斐波那契数列来解决。斐波那契...

    Java经典算法四十题

    递归函数`f(x)`根据兔子繁殖规律计算数列的第`x`项。 接着,【程序2】涉及到的是素数检测。素数是大于1且只能被1和自身整除的自然数。代码通过`iszhishu`方法检查从2到200之间的每个数字是否为素数。它通过遍历从2...

    最新JAVA编程题全集(50题及答案)

    - 题目要求计算兔子繁殖的问题,实际上涉及到了数学上的菲波拉契数列。菲波拉契数列定义为:每个数是前两个数的和,初始值为1和1。在Java程序中,通过循环结构实现数列的生成。代码使用了两个变量`f1`和`f2`分别...

    Java经典练习题.

    #### 一、【程序1】斐波那契数列(兔子繁殖问题) **题目描述**: 题目要求计算一个理想化的兔子繁殖问题中的兔子总数。假设一对兔子从出生后第3个月起每个月都会生一对新兔子,而新生的小兔子在成长至第3个月时也...

    JAVA经典问题算法大全

    假设有一对兔子,从第3个月起每对兔子每月都会生育一对新的兔子,新生的兔子在第三个月后也会繁殖。问题是,每个月会有多少对兔子。 - **程序分析:** 斐波那契数列的规律是:`1, 1, 2, 3, 5, 8, 13, 21, ...`,每...

    非常经典的JAVA编程题全集(50题及答案)

    #### 题目1:菲波那契数列与兔子繁殖问题 **题目描述**: 本题考察的是经典的菲波那契数列问题,通过模拟兔子繁殖的过程来生成数列。题目要求计算在一定月份内,兔子的数量变化情况,假设每对兔子从第三个月开始每...

    java逻辑50题

    #### 题目1:兔子繁殖问题 - **描述**:本题考察学生对于递归序列的理解能力。题目要求计算每个月兔子的总数,假设每对兔子从第三个月开始每个月都会产下一对新兔子,且兔子不会死亡。 - **知识点**: - **斐波那契...

    Java的一些经典算法题

    2. 兔子繁殖问题(斐波那契数列): 这是一个经典的数学问题,也称为斐波那契数列。每对兔子每月产一对新的兔子,新兔子在第三个月开始繁殖。程序通过循环计算每个月兔子的总数,f1和f2分别表示前两个月的兔子数量。...

    JAVA经典算法50题.doc

    这是一个经典的递归问题,描述的是兔子繁殖的问题。斐波那契数列的规律是每个数等于前两个数之和。Java实现如下: ```java public class Fibonacci { public static void main(String[] args) { for (int i = 1; ...

    用Java实现超大Fibonacci数的计算 (1).pdf

    它起源于一个关于兔子繁殖的问题,随着时间的推移,Fibonacci数列在多个领域得到了广泛应用,包括初等数学、组合数学、运筹学和最优化理论,甚至在信息隐藏和密码学中也占有重要地位。当处理实际问题时,有时我们...

    Java编程.doc

    1. **古典问题:兔子繁殖** 这个问题通常被称为“斐波那契数列”。程序通过计算兔子对数来展示斐波那契序列。斐波那契数列的规律是每一项都是前两项的和,起始值为1(兔子对数在第三个月开始繁殖)。程序使用`for`...

Global site tag (gtag.js) - Google Analytics