java 每日习题(三)兔子问题

/*
* Java练习题:兔子问题

此问题又叫斐波那契数列(Fabonacci),是最先研究这个数列的人是比萨的列奥那多(又名费波那契),他描述兔子生长的数目时用上了这数列。

第一个月有一对刚诞生的兔子
第二个月之后它们可以生育
每月每对可生育的兔子会诞生下一对新兔子
兔子永不死去
*/

package everyDay;


public class Tutu {

    public static void main(String[] args) {

        int month = 12;
        int sum;
        int L1 = 1;
        int newL1;
        int L2 = 0;
        int newL2;
        int L3 = 0;
        int newL3;

        for (int i = 1; i <= month; i++) {
            sum = L1 + L2 + L3;

            System.out.println("sum: " + sum);

            newL2 = L1;// L1 升级 L2

            newL3 = L2;// L2 升级 L3

            newL1 = L3 + newL3;// L3 生产 L1

            L1 = newL1;
 
            L2 = newL2;

            L3 = L3 + newL3;

        }

    }

}
View Code

 网上找的方法不清楚为什么初始化n1,n2都是1

import java.util.Scanner;

public class Tutu2 {
    public static void main(String[] args){
        int n1,n2,n3,month;   //n1,n2,n3 用作每月兔子数目的传递
        System.out.print("请输入需要计算的月份数:");
        Scanner sc=new Scanner(System.in);
        month=sc.nextInt();
        n1=1;
        n2=1;
        System.out.println("第1个月的兔子对数:"+n1);
        System.out.println("第2个月的兔子对数:"+n2);
        //依次传递,只需一次运算
        for(int i=1;i<month;i++) {
            n3=n1+n2;
            n1=n2;
            n2=n3;
            System.out.println("第"+month+"个月的兔子对数:"+n3);
        }
    }
}
原文地址:https://www.cnblogs.com/mtlogs/p/4959055.html