Fibonacci类始终返回0

时间:2009-12-24 11:13:48

标签: c# math

我有这堂课:

public class Fibonacci
{
    public static int Calculate( int x )
    {
        if (x <= 0)
        {
            return 0;
        }
        else
        {
            return Calculate(x - 1) + Calculate(x - 2);
        }
    }
}

根据一个教程我正在做的如果一个输入6一个应该得到8作为预期的结果,但是当我运行它时,它总是返回0.它是递归的所以它对我有意义,但它们如何得到8作为预期的结果?

5 个答案:

答案 0 :(得分:6)

什么是0 + 0 + 0 + 0 + 0 + 0 + ... + 0?

有你的答案。

答案 1 :(得分:4)

退出条件错误。仔细阅读您的代码并仔细考虑输入1和2。

答案 2 :(得分:2)

斐波纳契序列有2个停止点,它们都是1(1,1,2,3,5,...)。这有效:

using System;
using System.Collections.Generic;

public class Fibonacci
{
    public static int Calculate( int x )
    {
        if (x <= 1)
            return 1;
        else
            return Calculate(x - 1) + Calculate(x - 2);
    }

    public static void Main()
    {
     Console.WriteLine(Calculate(4));
    }
}

答案 3 :(得分:1)

教程错误或您错误地复制了代码。你是对的,你上面的东西总是会返回0.检查你的基本情况。

答案 4 :(得分:0)

Abductio ad absurdum - Calculate(x)永远不会实际返回非零数字。 8是第六个Fib数,但您永远不会从此函数创建非零值。正如@Blindy指出的那样,你需要一个更广泛和包容性的基础案例。