js算法总结

一、计算数组的极值

function smallest(array){                         
  return Math.min.apply(Math, array);             
}                                                 

function largest(array){                          
  return Math.max.apply(Math, array);             
}  

smallest([0, 1, 2.2, 3.3]); // 0
largest([0, 1, 2.2, 3.3]); // 3.3

用apply原因是Math.max、Math.min后面不能是数组类型;
es6:Math.max(...[14, 3, 77])

二、斐波那契数列、黄金分割线、兔子序列

     function fib(num)  {
        if (num === 0) return 0;
        if (num === 1) return 1;
        return fib(num - 2) + fib(num - 1);
     }
     console.log(fib(6)) //8
尾递归优化过的 Fibonacci 数列实现如下。

function Fibonacci2 (n , ac1 = 1 , ac2 = 1) {
  if( n <= 1 ) {return ac2};

  return Fibonacci2 (n - 1, ac2, ac1 + ac2);
}

Fibonacci2(100) // 573147844013817200000
Fibonacci2(1000) // 7.0330367711422765e+208
Fibonacci2(10000) // Infinity

二、es6求和算法

function add(...values) {
  let sum = 0;

  for (var val of values) {
    sum += val;
  }

  return sum;
}

add(2, 5, 3) // 10

你可能感兴趣的:(js算法总结)