兔子繁殖问题即斐波那契数列的java实现
来源:互联网 发布:电脑课本软件 编辑:程序博客网 时间:2024/04/30 02:20
斐波那契数列以兔子繁殖为例子而引入,故又称为“兔子数列”。
一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。初始有一对小兔子,假设所有兔子都不死,那么一年以后可以繁殖多少对兔子?
思路:
每月的兔子总数构成斐波那契数列:1、1、2、3、5、8、13、……。这个数列有个十分明显的特点:前面相邻两项之和,构成了后一项。
一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。初始有一对小兔子,假设所有兔子都不死,那么一年以后可以繁殖多少对兔子?
思路:
每月的兔子总数构成斐波那契数列: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<Integer>{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);}@Overridepublic 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> {T next();}
0 0
- 兔子繁殖问题即斐波那契数列的java实现
- [JAVA]兔子繁殖问题(斐波那契数列的推算)
- 【斐波那契数列】兔子繁殖问题
- 每天一道算法--经典兔子繁殖迭代问题(斐波那契数列)
- 每日一题 No.15 兔子繁殖问题(斐波那契数列)
- 计算兔子繁殖,斐波那契数列!
- 菲波拉契数列兔子繁殖问题
- 兔子繁殖问题(斐波那契数)
- JAVA基础-斐波那契(兔子繁殖)
- Fibonacci数列(兔子繁殖问题)
- Fibonacci数列(兔子繁殖问题)
- 菲波拉契数列问题——兔子繁殖
- java兔子问题(斐波那契数列)
- java算法--兔子繁殖问题
- Java-兔子繁殖求和问题
- 斐波那契数列(兔子问题)的变形
- 兔子繁殖-Fibonacci数列
- 矩阵快速幂 -- 兔子繁殖(也就是斐波那契数列啦)
- Java中@Override的作用
- unity-场景重置,游戏对象的初始化改变以及复制
- PAT-A1006 Sign In and Sign Out(25)(模拟)
- sql语句中in后面的数据过多报错,或效率低
- java asm库的原理与使用方法(一)
- 兔子繁殖问题即斐波那契数列的java实现
- [GDKOI2016]染色大战
- Java 虚拟机与 Dalvik 虚拟机的区别
- 【小笔记】afnetworking取数据时输入接口地址
- java.lang.IllegalArgumentException: Page directive: invalid value for import
- Gradle之dependencies
- 分享秦刚老师推荐的《降级论》(罗浩原著),讲了如何跨界
- next_permutation函数
- PAT-A1036 Boys vs Girls(25) (模拟)