为什么输出中有负数?

时间:2018-09-19 18:12:49

标签: java fibonacci

任务很经典:考虑到每个成熟的母猪会给三对幼兔,计算30个月后的兔对数量。 代码如下:

    int young = 1;
    int mature = 0;  
    for(int n=2; n<=31; n++)
    {
        int take_away=young;
        young=3*mature; 
        mature=mature+take_away;
        System.out.println("month:"+n+"\t"+"mature\t"+mature+"\t"+"young\t"+young+"\n");
        if(n==31)System.out.println(mature+take_away);
    }

这是问题所在:

最初一切都很好:

月:2个成熟的1个年轻的0

月:3个成熟的1个年轻的3

月:4个成熟的4个年轻的3

月:5个成熟的7个年轻的12个

从28个月开始的输出如下:

月:28个成熟的1674257764年轻-2113786333

减号从哪里来?

1 个答案:

答案 0 :(得分:1)

您使用int,新号码大于Integer.MAX_VALUE。请改用long