【发布时间】:2021-06-14 07:57:23
【问题描述】:
我被要求在斐波那契数列的控制台上打印一个列表,直到给定的数字。
我花了一段时间才想出一个解决方案,我很高兴能写出一些可行的东西。
我在尝试合并 while 循环时遇到了困难,最终使用了带有 if 语句的 for 循环。
我有两个问题:
- 用 while 循环试试这个是否明智?
- 如果没有预先设置的数组以及序列中的前两个数字,如何创建这个序列?
谢谢! 顺便说一句,这是我在 StackOverflow 上的第一篇文章,因此也欢迎任何有关发布礼仪的反馈。
function fibbonaciToNum(num) {
let current = 0;
let arr = [0, 1];
for (let i = 1; i < arr.length; i++) {
current = arr[i] + arr[i - 1]
if (current <= num) {
arr.push(current);
}
}
return arr;
}
console.log(fibbonaciToNum(34));
【问题讨论】:
-
老实说,为什么给学生提供斐波那契数列的唯一目的或多或少是为了让他们了解递归的工作原理。我会研究一下,但对创造力的赞誉。
-
其中包含
arr.length的循环条件,然后在循环中推送到数组,这有点误导,因为这对于阅读代码的人来说是意外的(代码for (let i = 1; i < arr.length; i++)只是如此刻板,以至于人们期望arr.length是静态的)。但是,没有错误可以按照您的方式进行操作。while的替代方案是let next; while ((next = arr[arr.length - 1] + arr[arr.length - 2]) <= num) arr.push(next);。我认为前两个预设没有任何问题。
标签: javascript for-loop if-statement while-loop fibonacci