JavaScript 斐波那契数列

JavaScript 斐波那契数列

在给定的问题陈述中,我们被要求使用JavaScript功能创建一个类似斐波那契数列的序列。在JavaScript中,我们可以通过递归或使用for循环来解决这个问题。

什么是斐波那契数列

让我们了解一下在JavaScript中斐波那契数列的工作原理。

我们知道,斐波那契数列是一个序列,其中每个数字都是前两个数字的和。序列从0和1开始。序列中的下一个数字是1(0 + 1),然后是2(1 + 1),3(1 + 2)…以此类推。

上述问题的逻辑

实现斐波那契数列的最简单方法是使用递归方法。

让我们了解给定问题的逻辑。JavaScript中的斐波那契数列的递归方法将问题分解为更小的子问题。它首先检查输入数字是否小于或等于1。如果等于1,则返回该数字;否则,继续计算第n个斐波那契数,通过以n-1和n−2作为参数递归调用定义的函数,并将结果相加。

步骤

步骤1 − 声明一个数字,直到获取斐波那契数列或生成序列的n个项。这里我们将看到两种实现方式。

步骤2 − 将n1和n2设置为0和1。定义一个nextDigit为空的数字。nextDigit将是n1和n2两个数字的和。

步骤3 − 此步骤将计算并确定我们为两段代码使用的方法。如果我们希望获得输出直到某个数字,我们将使用一个while循环,该循环将运行直到条件nextDigit小于或等于该数字时打印序列。如果我们希望输出到n项,则我们将使用一个for循环来迭代给定输入数字的长度。

步骤4 − 现在回到第三步,按要求打印斐波那契数列。

示例

// code to generate fibonacci sequence up to a certain number
const number = 13;
let n1 = 0, n2 = 1, nextDigit;

console.log('Fibonacci Series is as follows:');
// print 0 and 1 initially
console.log(n1);
console.log(n2);

//adding two consecutive digits
nextDigit = n1 + n2;

while (nextDigit <= number) {

    // print the next digit
    console.log(nextDigit);

    n1 = n2;
    n2 = nextDigit;
    nextDigit = n1 + n2;
}

输出

Fibonacci Sequence is as follows:
0
1
1
2
3
5
8
13

示例

// code to generate fibonacci series up to n terms
const number = 8;
let n1 = 0, n2 = 1, nextDigit;

console.log('Fibonacci Sequence is as follows:');

//initialize a for loop
for (let i = 1; i <= number; i++) {
    console.log(n1);
    nextDigit = n1 + n2;
    n1 = n2;
    n2 = nextDigit;
}

输出

Fibonacci Sequence i as follows:
0
1
1
2
3

时间复杂度

生成一定数量的斐波那契数列的时间复杂度为O(log n)。因为代码使用while循环来获取给定数字之前的数列。这个循环会一直执行,直到下一个数字大于输入的数字,此时while循环会终止。由于while循环迭代log以2为底的n次,所以此代码的复杂度为O(log n)。第一个代码的空间复杂度为O(1),因为所需空间不取决于输入的大小。

第二个方法的时间复杂度为O(n),其中n是数列中的项数。这段代码使用for循环遍历从1到输入数字的所有数值范围。由于此循环运行n次,所以复杂度为O(n)。

第二个方法的空间复杂度也为O(n),因为它为循环的每一步存储了n1和n2的值。由于存储这些数字所需的内存是恒定的,且不取决于输入的大小。因此,在这种情况下,我们忽略分析空间复杂度。

结论

在此代码中,我们实现了两种代码或算法。第一个代码输出斐波那契数列打印到给定数字。第二个代码返回前n个项的输出。我们得出结论,第一个和第二个方法的时间复杂度分别为O(log n)和O(n)。两种代码的空间复杂度均为O(1)。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程