当斐波纳契序列>时,Iteral斐波那契Java代码返回0.2个 [英] Iteral fibonacci java code returns 0 when fibonacci sequence > 2

查看:43
本文介绍了当斐波纳契序列>时,Iteral斐波那契Java代码返回0.2个的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面的代码从Fibonacci 0到100进行插值.但是,在Fibonacci数达到2并移至3之后,结果数为0.当我认为它应该可以工作时,它们应分别为3、5、8等.我不知道为什么.

the code below interates from Fibonacci 0 to 100. However after the Fibonacci number reaches 2 and moves on to 3, the resulting numbers are 0. when they should be 3, 5, 8 etc. by everything I see it should work and I am not sure why.

但是您会注意到

else{
    return 0;
}

在代码末尾,我这样做是因为代码对我大喊:代码将返回long类型的值.如果有解决方法,请告诉大家谢谢

at the end of the code, I did that because the code yells at me that the code is to return a value of type long. If there is a way to fix that please let know thanks guys

 public static void runFibonacci () {
    for (int N = 0; N < 100; N++)
        StdOut.printf ("fibonacci(%2d)=%d\n", N, fibonacci (N));
}
public static long fibonacci (int N) {
    long low = 0;
    long tempLow = 0;
    long tempHi = 0;
    long hi = 0;
    if (N == 0) return 0;
    if (N == 1) {
        hi ++;
        return 1;
    }

    if (N == 2){
        low ++;
        return 1;
    }

    if (N > 2){
        tempLow = hi;
        tempHi = (low + hi);
        hi = tempHi;
        low = tempLow;
        return hi;
    }
    else{
        return 0;
    }
}

输出

fibonacci( 0)=0
fibonacci( 1)=1
fibonacci( 2)=1
fibonacci( 3)=0
fibonacci( 4)=0
fibonacci( 5)=0

预期输出

fibonacci( 0)=0
fibonacci( 1)=1
fibonacci( 2)=1
fibonacci( 3)=2
fibonacci( 4)=3
fibonacci( 5)=5
etc

推荐答案

正如@WannaBeCoder所说,最好的解决方法是将我的变量公开,就像您在我要发布的代码的顶部看到的那样.如前所述,第一个方法调用了该方法,每次都将变量重置.这是有道理的.我学到了一些新东西,我很感激

As @WannaBeCoder said, the best fix was to make my variables public as you will see at the top of the code I am posting. As stated the method called by the first method, the variables were reset each time. Which makes sense. I learned something new and I am grateful

    public static long low = 0;
public static long tempLow = 0;
public static long tempHi = 0;
public static long hi = 0;

public static void runFibonacci () {
    for (int N = 0; N < 100; N++)
        StdOut.printf ("fibonacci(%2d)=%d\n", N, fibonacci (N));
}
public static long fibonacci (int N) {

    if (N == 0) return 0;
    if (N == 1) {
        hi ++;
        return 1;
    }

    if (N == 2){
        low ++;
        return 1;
    }

    if (N > 2){
        tempLow = hi;
        tempHi = (low + hi);
        hi = tempHi;
        low = tempLow;
        return hi;
    }
    else{
        return 0;
    }
}

输出

fibonacci( 0)=0
fibonacci( 1)=1
fibonacci( 2)=1
fibonacci( 3)=2
fibonacci( 4)=3
fibonacci( 5)=5
fibonacci( 6)=8
fibonacci( 7)=13
fibonacci( 8)=21
fibonacci( 9)=34
fibonacci(10)=55
fibonacci(11)=89
fibonacci(12)=144
fibonacci(13)=233
fibonacci(14)=377
fibonacci(15)=610
fibonacci(16)=987
fibonacci(17)=1597
fibonacci(18)=2584
fibonacci(19)=4181
fibonacci(20)=6765
fibonacci(21)=10946
fibonacci(22)=17711
fibonacci(23)=28657
fibonacci(24)=46368
fibonacci(25)=75025
fibonacci(26)=121393
fibonacci(27)=196418
fibonacci(28)=317811
fibonacci(29)=514229
fibonacci(30)=832040
fibonacci(31)=1346269
fibonacci(32)=2178309
fibonacci(33)=3524578
fibonacci(34)=5702887
fibonacci(35)=9227465
fibonacci(36)=14930352
fibonacci(37)=24157817
fibonacci(38)=39088169
fibonacci(39)=63245986
fibonacci(40)=102334155
fibonacci(41)=165580141
fibonacci(42)=267914296
fibonacci(43)=433494437
fibonacci(44)=701408733
fibonacci(45)=1134903170
fibonacci(46)=1836311903
fibonacci(47)=2971215073
fibonacci(48)=4807526976
fibonacci(49)=7778742049
fibonacci(50)=12586269025
fibonacci(51)=20365011074
fibonacci(52)=32951280099
fibonacci(53)=53316291173
fibonacci(54)=86267571272
fibonacci(55)=139583862445
fibonacci(56)=225851433717
fibonacci(57)=365435296162
fibonacci(58)=591286729879
fibonacci(59)=956722026041
fibonacci(60)=1548008755920
fibonacci(61)=2504730781961
fibonacci(62)=4052739537881
fibonacci(63)=6557470319842
fibonacci(64)=10610209857723
fibonacci(65)=17167680177565
fibonacci(66)=27777890035288
fibonacci(67)=44945570212853
fibonacci(68)=72723460248141
fibonacci(69)=117669030460994
fibonacci(70)=190392490709135
fibonacci(71)=308061521170129
fibonacci(72)=498454011879264
fibonacci(73)=806515533049393
fibonacci(74)=1304969544928657
fibonacci(75)=2111485077978050
fibonacci(76)=3416454622906707
fibonacci(77)=5527939700884757
fibonacci(78)=8944394323791464
fibonacci(79)=14472334024676221
fibonacci(80)=23416728348467685
fibonacci(81)=37889062373143906
fibonacci(82)=61305790721611591
fibonacci(83)=99194853094755497
fibonacci(84)=160500643816367088
fibonacci(85)=259695496911122585
fibonacci(86)=420196140727489673
fibonacci(87)=679891637638612258
fibonacci(88)=1100087778366101931
fibonacci(89)=1779979416004714189
fibonacci(90)=2880067194370816120
fibonacci(91)=4660046610375530309
fibonacci(92)=7540113804746346429
fibonacci(93)=-6246583658587674878
fibonacci(94)=1293530146158671551
fibonacci(95)=-4953053512429003327
fibonacci(96)=-3659523366270331776
fibonacci(97)=-8612576878699335103
fibonacci(98)=6174643828739884737
fibonacci(99)=-2437933049959450366

这篇关于当斐波纳契序列&gt;时,Iteral斐波那契Java代码返回0.2个的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆