Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中使用map或reduce打印斐波那契数列_Javascript_Arrays_Higher Order Functions - Fatal编程技术网

在javascript中使用map或reduce打印斐波那契数列

在javascript中使用map或reduce打印斐波那契数列,javascript,arrays,higher-order-functions,Javascript,Arrays,Higher Order Functions,我想在Javascript中使用map()或reduce()函数打印斐波那契数列。我在网上找不到它的任何东西。我不太确定我在地图()中的情况 我基本上是在写作 fib(n){ return new Array(n-1).fill(1).map((_,i) => *This is where I am confused* ) ; } 您可以使用Array.from和两个起始值来映射它,以获取序列 函数fib(长度){ 返回数组。from({length},((a,b)=>=>([b,a]

我想在Javascript中使用map()或reduce()函数打印斐波那契数列。我在网上找不到它的任何东西。我不太确定我在地图()中的情况

我基本上是在写作

fib(n){
return new Array(n-1).fill(1).map((_,i) => *This is where I am confused* ) ;
}

您可以使用
Array.from
和两个起始值来映射它,以获取序列

函数fib(长度){
返回数组。from({length},((a,b)=>=>([b,a]=[a+b,b,a])[2])(0,1));
}
控制台日志(fib(10))

.as console wrapper{max height:100%!important;top:0;}
您可以使用
Array.from
和两个用于获取序列的起始值来映射它

函数fib(长度){
返回数组。from({length},((a,b)=>=>([b,a]=[a+b,b,a])[2])(0,1));
}
控制台日志(fib(10))

。作为控制台包装{max height:100%!important;top:0;}
使用
reduce()
执行此操作相对容易,只需检查索引并采取相应的行动:

函数fib(n){
返回新数组(n).fill(1).reduce((arr,u,i)=>{

arr.push((i使用
reduce()
执行此操作相对容易,只需检查索引并采取相应行动:

函数fib(n){
返回新数组(n).fill(1).reduce((arr,u,i)=>{

arr.push((i下面是解决问题的代码。“elem”是当前值,“index”是当前索引,“currentary”是数组的实例

fibonacci = (n)=>{
    return new Array(n).fill(0).map((elem,index, currentArray)=>{
        if(index === 0){
            currentArray[index] = 0;
        }else if(index === 1){
            currentArray[index] = 1;
        }else{
            currentArray[index] = currentArray[index-2]+currentArray[index-1];
        }
        return currentArray[index];
    });  
}

您可以看到,对于每个步骤,我们都使用当前索引修改数组元素,然后返回当前索引处的元素。最后,在迭代完成后,您将得到斐波那契级数的数组。

下面是解决问题的代码。“elem”是当前值,“index”是当前索引,“currentArray”是数组的实例

fibonacci = (n)=>{
    return new Array(n).fill(0).map((elem,index, currentArray)=>{
        if(index === 0){
            currentArray[index] = 0;
        }else if(index === 1){
            currentArray[index] = 1;
        }else{
            currentArray[index] = currentArray[index-2]+currentArray[index-1];
        }
        return currentArray[index];
    });  
}
您可以看到,对于每个步骤,我们都使用当前索引修改数组元素,然后返回当前索引处的元素。最后,在迭代完成后,您将获得斐波那契数列的数组。

您可以按照此操作。希望它能帮助您尝试从google控制台运行它

function Fibonacci(n) {
    var f = [];
    for (var c = 0; c < n; ++c) {
        f.push((c < 2) ? c : f[c-1] + f[c-2]);
    }
    return f;
}
函数斐波那契(n){
var f=[];
对于(var c=0;c
您可以按照此操作。希望它能帮助您尝试在谷歌控制台上运行

function Fibonacci(n) {
    var f = [];
    for (var c = 0; c < n; ++c) {
        f.push((c < 2) ? c : f[c-1] + f[c-2]);
    }
    return f;
}
函数斐波那契(n){
var f=[];
对于(var c=0;c
我为我的学生写了一个野蛮的一行示例:

const fiboReduce=level=>新数组(Math.max(0,++level)).fill(0).reduce((acc,val,index)=>[…acc,…(index>1&&[acc[--index]+acc[--index]]),[0,…((level>1&[1])|[]);

console.log(fiboReduce(20));
我为学生们编写的一个野蛮的单行程序示例:

const fiboReduce=level=>新数组(Math.max(0,++level)).fill(0).reduce((acc,val,index)=>[…acc,…(index>1&&[acc[--index]+acc[--index]]),[0,…((level>1&[1])|[]);


控制台日志(fiboReduce(20))
你能解释一下为什么你想用
map
reduce
来做这件事吗?并不是说用
reduce
来做这件事特别难,但它感觉像是一个错误的工具,就像
map
一样。我也有同样的疑问,为什么这个问题被否决了?你能解释一下为什么你想用
map
来做这件事吗r
reduce
就是为了这个?这并不是说用
reduce
做起来特别难,但它感觉像是做这项工作的错误工具,
map
。我也有同样的疑问,为什么这个问题被否决了?忍者被否决了一分钟:-)
ninja'ed
让我大笑@LucaKiebelNice^^很久没用这个词了你的结果只有9个整数,而不是10,因为
fib(10)
会建议这是理想的结果Hanks@DarrenSweeney。修复了它。忍者被一分钟:-)忍者版
让我大笑@LucaKiebelNice^^很久没用这个词了你的结果只有9个整数,而不是fib(10)
会建议是期望的结果Hanks@DarrenSweeney。修复了它。
你可以遵循它。
也许不会,你能解释一下吗?@DarrenSweeney它工作得很好。我还附上了它的屏幕截图,你可以在那里查看。我的观点是,通过解释你在做什么,以及它是如何工作的,是有帮助的,并且不会促进复制和paste@DarrenSweeney循环将一直运行,直到c
您可以遵循此操作为止。
可能没有,您能解释一下吗?@DarrenSweeney它工作正常,我还附上了它的屏幕截图,您可以在那里查看。我的观点是,通过解释您正在做的事情以及它是如何工作的,是有帮助的,不会促进复制和复制paste@DarrenSweeney循环将被中断n到c