JavaScript中的斐波那契数列


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

什么是斐波那契数列?

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

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

上述问题的逻辑

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

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

算法

步骤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循环来获得直到给定数字的序列。该循环将持续进行,直到nextDigit大于输入数字,此时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)。

更新于:2023年8月23日

浏览量:296

开启你的职业生涯

完成课程获得认证

开始学习
广告