JavaScript 打印斐波那契数列
假设在一个班级中,老师要求1号学生在黑板上写0,2号学生写1,并要求其他学生将前两个学生的数字相加写在黑板上。写在黑板上的数列将会是0,1,1,2,3,5,8,………。
然后老师告诉学生,这个数列被称为 斐波那契数列 。可以用下面的等式表示:
Fn = Fn-1 + Fn-2
其中 F0=1 而 F1=1。斐波那契数列是以下整数序列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ……在数学术语中,斐波那契数列 Fn 定义为以下递归关系:
Fn = Fn-1 + Fn-2 with seed values F0 = 0 and F1 = 1
示例:
Input : 5
Output : 8
Input :8
Output :34
因为第一个斐波那契数是0,第二个是1。此外,我们知道第n个斐波那契数是n-1和n-2的和。因此,要得到第n个斐波那契项,我们可以遵循fib(1)=0 fib(2)=1 fib(3)=fib(2)+fib(1) fib(4)=fib(3)+fib(2) …. fib(n)=fib(n-1)+fib(n-2)
有三种方法来打印斐波那契数列,具体如下:
- 使用 for循环
- 使用 while循环
- 使用递归
示例: 此示例使用for循环来打印斐波那契数列。
function fibonacci(num) {
let num1 = 0;
let num2 = 1;
let sum;
let i = 0;
for (i = 0; i < num; i++) {
sum = num1 + num2;
num1 = num2;
num2 = sum;
}
return num2;
}
console.log("Fibonacci(5): " + fibonacci(5));
console.log("Fibonacci(8): " + fibonacci(8));
输出:
Fibonacci(5): 3
Fibonacci(8): 13
示例: 这个示例使用while循环打印斐波那契数列。
function fibonacci(num) {
if (num == 1)
return 0;
if (num == 2)
return 1;
let num1 = 0;
let num2 = 1;
let sum;
let i = 2;
while (i < num) {
sum = num1 + num2;
num1 = num2;
num2 = sum;
i += 1;
}
return num2;
}
console.log("Fibonacci(5): " + fibonacci(5));
console.log("Fibonacci(8): " + fibonacci(8));
输出:
Fibonacci(5): 3
Fibonacci(8): 13
使用递归方法: 我们知道第n个斐波那契数是第n-1个和第n-2个数的和,而第n-1个数是第n-2个和第n-3个数的和。所以,要得到第n个斐波那契数,我们可以按照fib(n)=fib(n-1)+fib(n-2)的方法,继续计算fib(n)=fib(n-2)+fib(n-3)+fib(n-3)+fib(n-4) …. fib(n)=fib(1)+fib(0)+fib(1)+fib(0)+fib(1)+fib(0)….fib(1)+fib(0) [含有fib(1)和fib(0)的和的项] fib(1)=0 fib(2)=1
示例: 此示例演示了上述方法的用法。
function fibonacci(num) {
if (num == 1)
return 0;
if (num == 2)
return 1;
return fibonacci(num - 1) + fibonacci(num - 2);
}
console.log("Fibonacci(5): " + fibonacci(5));
console.log("Fibonacci(8): " + fibonacci(8));
输出:
Fibonacci(5): 3
Fibonacci(8): 13