如何解决为什么我不能从0、1、1、2等开始获取FIBONACCI号码?初学者格式的解决方案受到高度赞赏
我应该能够用3的输入调用函数(可以说)
fibonacciGenerator(3);并获得[0,1,1]作为输出
代码从这里开始
function fibonacciGenerator(n) {
var fibNumSequence = [];
var n1= 0;
var n2 = 1;
var nextTerm;
for (var i = 0; i <= n; i++) {
nextTerm = n1+n2;
n1 = n2;
n2 = nextTerm;
fibNumSequence.push(n2);
}
return fibNumSequence;
}
fibonacciGenerator(n);
解决方法
您的代码的问题是n1从“ 0”更改为“ 1”,并且从未推送到fibNumSequence数组。这是顺序发生的事情:
- 您将n1声明为“ 0”
- 您将n2声明为“ 1”
- nextTerm设置为“ 0 + 1”
- n1设置为“ 1”(nextTerm的值)
- n2设置为“ 1”(n1的值)
- n2被推到数组,所以fibNumSequence = [1]
然后重复该过程。
您可以通过将fibNumSequence从开头设置为[0]并像这样设置for循环来解决此问题,每个循环将数组中的前一个数字添加到nextTerm变量。 “ n-1”用于更正数组开头的一个数字。
function fibonacciGenerator(n) {
var fibNumSequence = [0];
var nextTerm = 1;
for (var i = 0; i < n -1 ; i++) {
fibNumSequence.push(nextTerm);
nextTerm = nextTerm + fibNumSequence[i];
}
return fibNumSequence;
}
console.log(fibonacciGenerator(5))
,
将初始变量设为-1和1比将变量设为0和1具有更大的优势。
斐波纳契数列的C代码(10个元素):-
#include<stdio.h>
int main(){
int a=-1,b=1,x=0,i;
for(i=1;i<=10;i++){
x=a+b;
printf("%d\n",x);
a=b;
b=x;
}
}
此JavaScript代码适用于n的所有正整数值:-
function fibonacciGenerator(n) {
var fibNumSequence = [];
var n1 = -1;
var n2 = 1;
var nextTerm=0;
for (var i = 0; i < n; i++) {
nextTerm = n1+n2;
fibNumSequence.push(nextTerm);
n1 = n2;
n2 = nextTerm;
}
return fibNumSequence;
}
fibonacciGenerator(n);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。