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告诉我如何在代码中执行此操作。