斐波那契数列以兔子繁殖为例子而引入,故又称为“兔子数列”。

一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。初始有一对小兔子,假设所有兔子都不死,那么一年以后可以繁殖多少对兔子?

思路:

每月的兔子总数构成斐波那契数列:1、1、2、3、5、8、13、……。这个数列有个十分明显的特点:前面相邻两项之和,构成了后一项。

假设F(n)为第n月的兔子总数,有如下定义:F(1)=1;F(2)=1;F(n)=F(n-1)+F(n-2);

java实现代码如下:

import java.util.Scanner;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class Fibonacci implements Generator{

private int count = 0;

protected int times = 20;

public Fibonacci(){}

public Fibonacci(int times){

this.times = times;

}

public static void main(String[] args) {

//控制台输入

Scanner scanner = new Scanner(System.in);

System.out.println("Please input the fibonacci n :");

String str = scanner.nextLine();

//校验正整数

Pattern pattern = Pattern.compile("^[1-9]+\\d*$");

Matcher matcher = null;

while(true){

matcher = pattern.matcher(str);

if(!(matcher.matches())){

System.out.println("输入不合法,请输入大于0的数字!");

str = scanner.nextLine();

}else{

break;

}

}

int n = Integer.valueOf(str).intValue();

//递归

Fibonacci fib = new Fibonacci(n);

System.out.println("Generate a Fibonacci sequence in recursion algorithm : ");

for(int i = 0;i < fib.times;i++ ){

System.out.print( fib.next() + "\t\t");

if((i +1)%5 == 0){

System.out.print("\n");

}

}

//递推

for(int i = 0;i < n;i++){

System.out.print(fib.induceFib(i) + "\t\t");

if((i +1)%5 == 0){

System.out.print("\n");

}

}

}

/**

* 递归实现

* @param n

* @return

*/

private int recursionFib(int n){

if(n < 2){

return 1;

}

return recursionFib(n-2) + recursionFib(n-1);

}

@Override

public Integer next() {

return recursionFib(count++);

}

/**

* 归纳递推实现

* @param n

* @return

*/

private int induceFib(int n){

int nonius1 = 1,nonius2 = 1,noniusSum = 0;

if(n < 2){

return 1;

}

for(int i = 0;i < n;i++){

noniusSum = nonius1 + nonius2;

nonius1 = nonius2;

nonius2 = noniusSum;

}

return noniusSum;

}

}

public interface Generator {

T next();

}

java兔子繁殖总数_兔子繁殖问题即斐波那契数列的java实现相关推荐

  1. python斐波那契数列前20项_兔子繁殖问题带来的智商碾压:斐波那契数列趣谈

    本文来自公众号:超级数学建模 微信号 :supermodeling 原文标题:斐波那契数列趣谈 via 善科 by BB 一般认为斐波那契数列的提出是基于兔子的繁殖问题:如果一开始有一对兔子,它们每月 ...

  2. 斐波纳契数列 java_几种复杂度的斐波那契数列的Java实现

    一:斐波那契数列问题的起源 13世纪初期,意大利数论家Leonardo Fibonacci在他的著作Liber Abaci中提出了兔子的繁殖问题: 如果一开始有一对刚出生的兔子,兔子的长大需要一个月, ...

  3. 用python语言编斐波那契数列_用python函数写斐波那契数列

    斐波那契数列,又称黄金分割数列.因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为"兔子数列",指的是这样一个数列:1.1.2.3.5.8.13.21.34.--在数学上, ...

  4. 循环斐波那契数列_第五课:斐波那契数列(第一课时)

    简介:又称黄金分割数列.因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为"兔子数列",指的是这样一个数列:1.1.2.3.5.8.13.21.34--在数学上,斐波那契数 ...

  5. 斐波那契数列(Java语言)

    LeetCode 509 斐波那契数 LeetCode链接 斐波那契数(通常用F(n)表示)的定义: F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2),n>1由斐波那契数构成的序 ...

  6. 用python函数写斐波那契数列通项公式_用python函数写斐波那契数列

    斐波那契数列,又称黄金分割数列.因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为"兔子数列",指的是这样一个数列:1.1.2.3.5.8.13.21.34.--在数学上, ...

  7. 循环斐波那契数列_剑指offer #10 斐波那契数列

    (递归和循环)#10 斐波那契数列 一.斐波那契数列 定义: n = 0 , f(n) = 0 n = 1 , f(n) = 1 n > 1 , f(n) = f(n-1) + f(n-2) 思 ...

  8. 兔子数列(斐波那契数列)java语句的实现

    兔子数列是一个经典的数列,又称黄金分割数列.因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为"兔子数列",指的是这样一个数列:1.1.2.3.5.8.13.21.34.- ...

  9. c语言斐波那契数列_视频丨神奇的斐波那契数列科学性与艺术性

    生命是奇妙的 生命是有生命的 斐波那契数列 Fn+1=Fn+Fn-1,这个数列中的每个数字都是前两项数之和,如果是以1,1开头的自然数数列,1,1,2,3,5,8,13,21,34,55,89--这些 ...

  10. 【剑指offer】面试题10- I:斐波那契数列(Java)

    写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项.斐波那契数列的定义如下: F(0) = 0,   F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其 ...

最新文章

  1. 计算机的一些小操作,电脑小白操作中最实用的9个技巧!
  2. Leetcode 33.搜索旋转排序数组 (每日一题 20210707)
  3. rabbitMQ教程 一篇文章看懂rabbitMQ
  4. 苹果手机运行python_iPhone是卖的最好的手机?用Python照样把他玩弄鼓掌之间!
  5. python自然场景文字识别_chineseocr
  6. 如何在Ubuntu上安装GCC编译器
  7. Redis 3.0.1 安装和配置
  8. 《动手学深度学习》第一天 (2.1+2.2)
  9. centos7 firewalld
  10. 计算机地址栏搜索记录怎么删除,怎么删除网址?如何删除浏览器地址栏的网址历史记录和搜索记录...
  11. PLSQL 教程 简单上手教程
  12. 流量卡之家:物联网系统解决交通拥堵 全面开启未来绿色出行
  13. 【axios】get和post请求用法
  14. 模块划分-1 功能划分
  15. 带自动还原魔方游戏源码
  16. CryEngine5 Shader调试
  17. K-th Largest Value
  18. 戴尔笔记本无线网络无法连接
  19. TencentOS学习笔记(1)
  20. 股东转让股权的条件是什么

热门文章

  1. Ubuntu 16.04 (Ubuntu18.04 也可以用)远程桌面(使用win10远程桌面客户端链接)和 使用vncveiwer链接的配置
  2. CSGO地图人物模型配置
  3. 泛泛而谈:白话分布式一致性与共识算法
  4. BZOJ5287 HNOI2018毒瘤
  5. 干货!图像集分类大杀器--混合黎曼度量学习
  6. Cannot deploy artifacts when Maven is in offline mode
  7. Spring MVC 详解
  8. 服务器开机系统进不去怎么办,开机就进BIOS进不去系统怎么处理
  9. php是什么电器元件,看完这个保证你认识“贴片电路板上”的每一个电子元件
  10. 为什么现在android UI设计能火起来?