斐波那契数列-有一对兔子

/***********************************************************************************************
*  题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,
*  小兔子长到第三后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
  *  1.程序分析: 兔子(对)的规律为数列1,1,2,3,5,8,13,21....
* @param args
* 【斐波那契数列】
**********************************************************************************************
*/

/*
* ********************************************************************************************
* 斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、……在数学上,
* 斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、
* 准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,
* 美国数学会从1960年代起出版了《斐波纳契数列》季刊,专门刊载这方面的研究成果。
* http://baike.baidu.com/link?url=XDTUlQcoyEDY-TWFxNHEdfmm8TfGWQtc-prrMntdplt0TS3V3SSbNx94b7ED_IBV
*********************************************************************************************
*/

package com.arithmetic.text;

public class RabbitCount {

	/***********************************************************************************************
	 *  题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,
	 *  小兔子长到第三后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
 	 *  1.程序分析: 兔子(对)的规律为数列1,1,2,3,5,8,13,21....
	 * @param args
	 * 【斐波那契数列】
	 **********************************************************************************************
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int month = 0;// 以20个月为例进行试算
		for (month = 1; month < 20; month++)
			System.out.println(month + "月 兔子数量是 " + fibonacci(month) + " 对 ");
	}

	/*
	 * ********************************************************************************************
	 * 斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、……在数学上,
	 * 斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、
	 * 准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,
	 * 美国数学会从1960年代起出版了《斐波纳契数列》季刊,专门刊载这方面的研究成果。
	 * http://baike.baidu.com/link?url=XDTUlQcoyEDY-TWFxNHEdfmm8TfGWQtc-prrMntdplt0TS3V3SSbNx94b7ED_IBV
	 *********************************************************************************************
	 */
	private static int fibonacci(int x) {
		if (x == 1 || x == 2)
			return 1;
		else
			return (fibonacci(x - 1) + fibonacci(x - 2));
	}
	/*
	 * 根据数列规律,每项值都等于前两者之和
	 */
	private static int fib(int x) {
		int m1 = 1 , m2 = 1 , temp;
		if (x == 1 || x == 2)
			return 1;
		else{
			for(int i = 3; i<=x; i++){
				temp = m2;
				m2 = m1 + m2;
				m1 = temp;
			}
			return m2;
		}
	}

}
时间: 2024-10-01 18:51:38

斐波那契数列-有一对兔子的相关文章

斐波那契数列(Fabonacci)兔子练习题

Java练习题:兔子问题       此问题又叫斐波那契数列(Fabonacci),是最先研究这个数列的人是比萨的列奥那多(又名费波那契),他描述兔子生长的数目时用上了这数列. 第一个月有一对刚诞生的兔子 第二个月之后它们可以生育 每月每对可生育的兔子会诞生下一对新兔子 兔子永不死去        假设在 n 月有新生及可生育的兔子总共 a 对,n+1 月就总共有 b 对.在 n+2 月必定总共有 a+b 对: 因为在 n+2 月的时候,所有在 n 月就已存在的 a 对兔子皆已可以生育并诞下 a

斐波那契数列和反向计算问题

反向计算:编写一个函数将一个整型转换为二进制形式 反向计算问题,递归比循环更简单 分析:需要理解,奇数的二进制最后一位是1,偶数的二进制最后一位一定是0,联想记忆,这个和整型的奇偶性是一致的,1本身就是奇数,0本身是偶数.     十进制整数转换为二进制整数采用"除2取余,逆序排列"法. 具体做法是:用2整除十进制整数,可以得到一个商和余数,再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,

java-关于斐波那契数列的求和问题的解答

问题描述 关于斐波那契数列的求和问题的解答 .有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一 对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析: 兔子的规律为数列1,1,2,3,5,8,....;求Java程序代码 解决方案 斐波那契数列及其求和 解决方案二: a[i]=a[i-1]+a[i-2]就行了呗,java难道难写吗 解决方案三: public class Test { public static void main(String[]

递归解决斐波那契数列

1.什么是递归? 递归:递归是方法定义调用方法本身的现象.递归举例如下: <span style="font-size:14px;">public class DiGuiDemo { //递归方法举例 public void show() { show(); } } </span> 2.递归的注意事项? (1)递归一定要有出口.否则就会死递归. 上面举例用的递归就是一个死递归,方法永远都在进行自身调用,最终一定会陷入内存崩溃.所以递归要定义出口,就是结束递归的条

【数学题】斐波拉契数列!

兔子的繁殖能力很强,一对兔子每过一个月会生一对小兔子.而刚出生的一对小兔子经过一个月后长大,再过一个月生出一对小兔子.如果从刚生的一对兔子算起,一年后总共有多少对兔子? 答案:233对.每个月结束时,兔子的对数:1  12  23  34  55  86  137  218  349  5510 8911 14412 233设数列{An}={1,2,3,5,8--}={A1,A2--An-1,An}.则An=An-1+An-2(下标)第n月结束时兔子对数=n-1月兔的对数+新生兔子对数.新生兔对

hdu 4549 M斐波那契数列

click here ~~ Problem Description M斐波那契数列F[n]是一种整数数列,它的定义如下: F[0] = a F[1] = b F[n] = F[n-1] * F[n-2] ( n > 1 ) 现在给出a, b, n,你能求出F[n]的值吗? Input 输入包含多组测试数据: 每组数据占一行,包含3个整数a, b, n( 0 <= a, b, n <= 10^9 ) Output 对每组测试数据请输出一个整数F[n],由于F[n]可能很大,你只需输出F[n

用PHP迭代器来实现一个斐波纳契数列

斐波纳契数列通常做法是用递归实现,当然还有其它的方法.这里现学现卖,用PHP的迭代器来实现一个斐波纳契数列,几乎没有什么难度,只是把类里的next()方法重写了一次.注释已经写到代码中,也是相当好理解的. <?php /* *@author nicesunboy@gmail.com */ class Fibonacci implements Iterator { private $previous = 1; private $current = 0; private $key = 0; publ

输出斐波那契数列的算法

斐波那契数列(Fibonacci polynomial),又称黄金分割数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.-- 要求编程输出这样的一组数,比如输出10个数的序列 /** * @param i 第n个数 * @param j 第n+1个数 * @param n 输出个数 */ public static void ff( int i,int j,int n){ int m=1; System.out.print(i+","); while(m++<n)

打印菱形以及斐波纳契数列的几种解法介绍

1.编写程序,打印*菱形推出第i行要打印的空白个数及*号个数,用for循环依次打印各行 复制代码 代码如下: #include<stdio.h> //总共要打印2*n-1行,逐行打印 void print1(int n) { int i,j; for(i=1;i<=n;i++){//打印1至n行 for(j=1;j<=n-i;j++)//打印n-i个空格 printf(" "); for(j=1;j<=2*i-1;j++)//打印2*i-1个*号 prin