Javascript 如何将斐波那契数中的所有值提取到n?

Javascript 如何将斐波那契数中的所有值提取到n?,javascript,Javascript,我需要使用递归编写函数,而不同时使用数组。将斐波那契数字的所有值返回到nn>0 function fib(number) { if (number === 1) { return "0,1,1"; } if (number === 2) { return "0,1,1,2,"; } else { let fibList = fib(number - 1); return (fibList += `${number - 2 + number - 1}

我需要使用递归编写函数,而不同时使用数组。将斐波那契数字的所有值返回到
n
<代码>n>0

function fib(number) {
  if (number === 1) {
    return "0,1,1";
  }
  if (number === 2) {
    return "0,1,1,2,";
  } else {
    let fibList = fib(number - 1);
    return (fibList += `${number - 2 + number - 1},`);
  }
}
console.log(fib(45));
我的代码无法正常工作,我不知道如何修复它

n=7 “0, 1, 1, 2, 3, 5 “

n=45 “0, 1, 1, 2, 3, 5, 8, 13, 21, 34”

有点有趣的问题。这有助于运用一些数学理论。可以证明,一个数,
n
,是一个斐波那契数,当且仅当
5*n**2+4
5*n**2-4
是一个完美的正方形(请参见证明)。使用这种特性,直接编写递归函数就足够容易了。下面是一个Python示例,您应该能够将其移植到JavaScript:

import math

def perfect_square(n):
    return int(math.sqrt(n)) ** 2 == n

def is_fib(n):
    return perfect_square(5*n**2 + 4) or perfect_square(5*n**2-4)

def fibs_below(n):
    if n == 1:
        return "0 1 1"
    elif is_fib(n):
        return fibs_below(n-1) + ' ' + str(n)
    else:
        return fibs_below(n-1)
例如:

>>> fibs_below(45)
'0 1 1 2 3 5 8 13 21 34'

网上有一万个关于如何计算的例子Fibonacci@epascarello而且大多数都是关于递归编程的。你的问题描述不清楚。编写返回第一个
n
Fibonacci数的递归函数相对容易。另一方面,我看不到任何自然的方法来编写递归函数,该函数返回数值
n
以下的斐波那契数。对于大多数
n
f(n)
的输出将等于
f(n-1)
的输出。这些是完全不同的问题。你确定你正确理解了这个问题吗?我没有找到任何不使用数组的示例。我希望没有数组。@JohnColeman告诉我如何在代码中执行此操作。