Java程序设计之裴波拉切那数列(兔子一年的数量)

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

  典型的裴波拉切那问题不多说了,直接上代码好了。

import java.util.ArrayList;

public class SecondThread{
    static ArrayList<Integer> list = new ArrayList();
    int number ;//计算后一个月的兔子数量
    public static void main(String[] args){
        SecondThread st = new SecondThread();
        st.fun();
        st.out();
    }

    private void fun(){ //将12个月的兔子数量保存进list链表集合内
        list.add(1);
        list.add(1); //前两个月的兔子数量
        for(int i = 3;i<=12;i++){
            number = list.get(i-2)+list.get(i-3);
            list.add(number);
        }
    }

    private void out(){//输出12个月的兔子数量
        int i =1;
        for(int j:list){
            System.out.println("第"+(i++)+"个月的兔子数量是"+j);
        }
    }
}
时间: 2024-10-15 04:29:30

Java程序设计之裴波拉切那数列(兔子一年的数量)的相关文章

hdu 2516(斐波拉切博弈)

题意:容易理解. 分析:通过枚举寻找规律,这就是做1堆或者2堆石子博弈的技巧!当为2或者3时,肯定是第二个人赢,当为4时,先去一个石子,然后当对方面临3,于是第一个人赢, 当为5时,取1时,第二个人赢,取2时也是第二个人赢...,于是为5时也是滴二个人赢...多枚举几个之后就会发现只要满足斐波拉切数列的都是第二个人赢,其它的 则是第一个人赢! 代码实现: #include<stdio.h> #include<string.h> int main() { int n,i,t1,t2,

js中斐波拉切数的三种写法;

js中斐波拉切数的三种写法: function factorial(num){ if(num <=1){ return 1; }else{ return num* factorial(num-1); } } console.log(factorial(5));//120 面这个函数的执行与函数名紧紧耦合在了一起,可以使用arguments.callee可以消除函数解耦 第二种(在严格模式下,访问这个属性会抛出TypeError错误) function factorial(num){ if(num

【简洁之美】裴波那切数列生成器 python

裴波那切数列可以用生成器较好的去生成,直接上代码: # 1 控制最大数字版本def fib(max): x,y = 0,1 while y < max: yield x x,y = y,x+y print [x for x in fib(100)] # 输出[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55] # 2 控制迭代个数版本 def fib(count): x,y,n = 0,1,1 while n < count: yield x x,y = y,x+y n

斐波拉切字符串统计个数 Fibonacci String

Problem:  s0 = "a", s1 = "b", s2 = "ba", s3 = "bab", s4 = "babba", s4 = "babbabab", is called Fibonacci string. For the string with index n, given a string str = "bb", calculate how man

Python——从连续赋值到斐波拉切数列

Python中有一个非常简洁的赋值语句用法,就是连续赋值. 要分别给两个变量赋值,我的第一念头是如下: 1 a = 1 2 b = 2 但其实python还提供了一种更简洁的写法如下 1 a , b = 1 , 2 这时我们很自然的就能理解为按顺序赋值,a = 首位数字1,b = 次位数字2.但实际上并不仅仅如此. 连续赋值语句中等式右边其实都是局部变量,而不是真正的变量值本身.当等号右边是定值时,这样做当然没有问题.但是如果右边是一个含有变量的表达式,那么赋值时会采用截至本句代码前一句为止,各

用模板元实现50个台阶问题,一次走一步或者两步或者3步,用模板元实现求裴波那契额数列

 1.用模板元实现50个台阶问题,一次走一步或者两步或者3步 2.分析 由上面分析可以知道,到达N(N > 3)级台阶时的次数为:目标台阶的前3个台阶分别直接到目标台阶的次数总和. 3.模板元把在运行时消耗的时间,在编译器键优化. 4.通过模板元实现的代码如下: #include <iostream> /*这里是int 类型的,N表示台阶数量*/ template<int N> struct data { enum { res = data<N - 1>::r

ACM/ICPC算法训练 之 数学很重要—斐波拉契●卢卡斯数列(HNNUOJ 11589)

看到这个标题,貌似很高大上的样子= =,其实这个也是大家熟悉的东西,先给大家科普一下斐波拉契数列. 斐波拉契数列 又称黄金分割数列,指的是这样一个数列:0.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*) 在现代物理.准晶体结构.化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963起出版了以<斐波纳契数列季刊>为名的一份数学杂志,用于专门刊载这方面的

java循环输出斐波拉契数列

斐波拉契--引用于百度百科 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列",指的是这样一个数列:1.1.2.3.5.8.13.21.34.--在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理.准晶体结构.化学等领域,斐波纳契数列都有直接的应用,为

斐波拉切

第一种方法: public class Fibonacci2{  //定义数组方法 public static void main(String[] args) {  int arr[] = new int[20];  arr[0] = arr[1] = 1;  for (int i = 2; i < arr.length; i++) {   arr[i] = arr[i - 1] + arr[i - 2]; }  System.out.println("斐波那契数列的前20项如下所示:&