在函数式编程风格中计算数字?

时间:2017-10-19 18:44:20

标签: javascript functional-programming

我正在努力理解函数式编程的概念。我只是在这里使用javascript来理解它的概念

通常我们会以这种方式数到10:

for(var i=0;i<10;i++){
 console.log(i+1)
}

这是功能编程等效吗?

var a = 1;
var n = 10;

function counter(){
  console.log(a);
  if(a<n){
    counter(++a);
  }
}

counter();

3 个答案:

答案 0 :(得分:1)

您可以使用递归来获得(更多)函数式编程解决方案:

(function counter(a, n){
    console.log(a);
    a < n && counter(a+1, n);
})(1, 10);

答案 1 :(得分:0)

这是我对它的看法。

Array(n).fill()用于生成一系列n元素以进行迭代。

.forEach(...)遍历元素并根据元素的indexb(&#34; base&#34;)值从外部提供工作

&#13;
&#13;
const counter = (n, b) => Array(n).fill().forEach((_, index) => console.log(index + b));

counter(10, 1);
&#13;
&#13;
&#13;

答案 2 :(得分:-1)

您无法在函数式编程中更改可变数据。当你必须解决一个变量时,把它想象成在学校做数学。无论你做什么,该变量将始终具有相同的值。在您的示例中,您正在更改该变量的值。要进行函数式编程,当函数结束时,该变量需要具有相同的值,就像它在开始时那样。

var a = 1;
var n = 10;

counter(a,n);

function counter(num, limit){
  if (num > limit) 
    return;
  console.log(num);
  counter(num+1, limit);
}

将函数式编程视为a和n仍然具有相同的值,因此您没有更改可变数据。

Functional Programming