首页 > 解决方案 > 为什么输出中有负数?

问题描述

该任务是经典的:计算 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

减号从何而来?

标签: javafibonacci

解决方案


您使用int和新的号码是超过Integer.MAX_VALUE。请改用long


推荐阅读