如何循环数字序列以根据给定数字连续推送? (斐波那契)
How to loop a sequence of numbers to push continuously based on a given number? (Fibonacci)
我试图深入了解 Fibonacci 的工作原理,所以我尝试了一种不同的方法并制作了我自己的方法,但不知何故它不会循环并最终只推送 1 个而不是 5 个序列。这是我的代码:
function myFibo (n){
var myArr = [];
if(n===1){
myArr=[0];
console.log(myArr);
}else if (n===2){
myArr[0,1];
}else {
var i = 2;
while (i<n){
myArr = [0,1];
var pos1 = 0;
var pos2 = 1;
var sum = myArr[pos1] + myArr[pos2]; //1
myArr.push(sum);
pos1++;
pos2++;
i++;
}
}
console.log(myArr);
}
myFibo(5);
如果你想保留你的功能,试试这个稍微改变一下的代码
function myFibo (n) {
var myArr = [];
if (n === 1) {
myArr = [0];
} else if (n === 2) {
myArr = [0, 1];
}
if (n > 2) {
myArr = [0, 1];
var i = 2;
// var sum = 0;
while (i < n) {
var sum = myArr[i-2] + myArr[i-1];
myArr.push(sum);
i++;
}
}
console.log(myArr);
return myArr;
}
在此处检查控制台输出 https://codepen.io/vyspiansky/pen/ExKjgoj?editors=0011
您的代码的问题很简单,您是 re-initializing while 循环开始时的跟踪变量:
while (i<n){
myArr = [0,1];
var pos1 = 0;
var pos2 = 1;
您应该在 while 循环之前初始化变量。更新后的代码如下所示:
function myFibo(n) {
var myArr = [];
if (n === 1) {
myArr = [0];
console.log(myArr);
} else if (n === 2) {
myArr[(0, 1)];
} else {
var i = 2;
var pos1 = 0;
var pos2 = 1;
myArr = [0, 1];
while (i < n) {
var sum = myArr[pos1] + myArr[pos2]; //1
myArr.push(sum);
pos1++;
pos2++;
i++;
}
}
console.log(myArr);
}
myFibo(5);
我试图深入了解 Fibonacci 的工作原理,所以我尝试了一种不同的方法并制作了我自己的方法,但不知何故它不会循环并最终只推送 1 个而不是 5 个序列。这是我的代码:
function myFibo (n){
var myArr = [];
if(n===1){
myArr=[0];
console.log(myArr);
}else if (n===2){
myArr[0,1];
}else {
var i = 2;
while (i<n){
myArr = [0,1];
var pos1 = 0;
var pos2 = 1;
var sum = myArr[pos1] + myArr[pos2]; //1
myArr.push(sum);
pos1++;
pos2++;
i++;
}
}
console.log(myArr);
}
myFibo(5);
如果你想保留你的功能,试试这个稍微改变一下的代码
function myFibo (n) {
var myArr = [];
if (n === 1) {
myArr = [0];
} else if (n === 2) {
myArr = [0, 1];
}
if (n > 2) {
myArr = [0, 1];
var i = 2;
// var sum = 0;
while (i < n) {
var sum = myArr[i-2] + myArr[i-1];
myArr.push(sum);
i++;
}
}
console.log(myArr);
return myArr;
}
在此处检查控制台输出 https://codepen.io/vyspiansky/pen/ExKjgoj?editors=0011
您的代码的问题很简单,您是 re-initializing while 循环开始时的跟踪变量:
while (i<n){
myArr = [0,1];
var pos1 = 0;
var pos2 = 1;
您应该在 while 循环之前初始化变量。更新后的代码如下所示:
function myFibo(n) {
var myArr = [];
if (n === 1) {
myArr = [0];
console.log(myArr);
} else if (n === 2) {
myArr[(0, 1)];
} else {
var i = 2;
var pos1 = 0;
var pos2 = 1;
myArr = [0, 1];
while (i < n) {
var sum = myArr[pos1] + myArr[pos2]; //1
myArr.push(sum);
pos1++;
pos2++;
i++;
}
}
console.log(myArr);
}
myFibo(5);