java - 为什么输出中有负数?

标签 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

负号从何而来?

最佳答案

您使用 int 并且新数字大于 Integer.MAX_VALUE。请改用long

关于java - 为什么输出中有负数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52411915/

相关文章:

c - 我如何正确地使这个循环显示斐波那契数列的前 40 位数字?

c++ - 输出一个15位数字

java - 制作一个循环来查找斐波那契数列中的第 n 项

java - 为什么这个算法会为除 0 和 1 之外的所有种子打印斐波那契/三波那契序列?

java - 响应何时通过异步 Servlet 传递到客户端?

algorithm - 将迭代转换为递归

java - 在JAVA中赋值

java - 在不使用递归的情况下,如何让我的方格在彼此之后而不是在彼此之上生成?

java - 如何使循环运行与用户输入一样多的次数?

java - 如何解决错误: No server chosen by ReadPreferenceServerSelector