返回我没有返回的数字的简单函数';我不期望使用JavaScript

返回我没有返回的数字的简单函数';我不期望使用JavaScript,javascript,function,recursion,fibonacci,Javascript,Function,Recursion,Fibonacci,我有这个简单的函数,在纸上测试。我的答案是9但是当我回到家console.log(fib(6))我的游戏结果是8。为什么? 我还问了我的教授,他给了我这个图表,但我还是不明白。有什么帮助吗 函数fib(num1){ if(num1 此图表既展示了代码的功能,也从根本上展示了斐波那契数的含义。 下面是该图表的工作原理: 图表从fib(6)开始 由于fib(x)=fib(x-1)+fib(x-2),然后fib(6)=fib(5)+fib(4),如向下移动的箭头所示 您现在有两个值要包含在最终答

我有这个简单的函数,在纸上测试。我的答案是
9
但是当我回到家
console.log(fib(6))
我的游戏结果是
8
。为什么?

我还问了我的教授,他给了我这个图表,但我还是不明白。有什么帮助吗

函数fib(num1){
if(num1

此图表既展示了代码的功能,也从根本上展示了斐波那契数的含义。

下面是该图表的工作原理:

  • 图表从fib(6)
  • 开始
  • 由于
    fib(x)=fib(x-1)+fib(x-2)
    ,然后
    fib(6)=fib(5)+fib(4)
    ,如向下移动的箭头所示
  • 您现在有两个值要包含在最终答案中
    fib(5)
    fib(4)
    。该图表显示了如何对它们重复上述过程(将它们分成更小的部分)
  • 重复步骤1-3,直到到达
    fib(2)
    fib(1)
    ,根据定义,它自动等于
    1
  • 最后,将图表底部的所有
    1
    s相加(共有8个)
  • 下面是您的代码:

    函数fib(num1){
    //从数字开始(图表上的步骤1)。
    if(num1这个程序是著名的程序,前两个之后的每个数都是前两个数的和,例如:

    1 1 2 3 5 8 13.....
    
    如你所见,第六个数字是8

    现在我们讨论如何解决这个问题。首先,你应该知道递归关系是:

    F(i) = F(i - 1) + F(i - 2)
    
    F(1)=1,F(2)=1

    因此,代码应该是:

    function fib(num1) {
        if (num1 <= 2) return 1;
        return fib(num1 - 1) + fib(num1 - 2);
    }
    
    函数fib(num1){
    
    如果(num1)你的数学算错了,我真的不知道在那张图表之后还有什么要说。你能详细说明一下你不明白的图表是怎么回事吗?这不应该移到数学溢出吗?你知道fib(6)应该是8对的吗?
    (f(0)=0∧ f(1)=1)⇒ (f(2)=1)
    (f(1)=1∧ f(2)=1)⇒ (f(3)=2)
    (f(2)=1∧ f(3)=2)⇒ (f(4)=3)
    (f(3)=2∧ f(4)=3)⇒ (f(5)=5)
    (f(4)=3∧ f(5)=5)⇒ (f(6)=8)