我有这堂课:
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作为预期的结果?
答案 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指出的那样,你需要一个更广泛和包容性的基础案例。