JS:菲波那切数列--普通方式+数组缓存形式

普通方式:每个前置的数值都会被重复计算很多次
数组缓存方式:前置的数值如果计算了,就存在数组中,用的时候直接拿出来就行了

# 普通方式
function fib1(n) {
  var result;
  if (n <=1 ) {
    return 1;
  } else {
    result = fib1(n - 1) + fib1(n - 2)
  }
  return result;
}
console.time("fib1--普通的:")
console.log("fib1--普通的:", fib1(41))
console.timeEnd("fib1--普通的:");

# 数组缓存形式
var a = [];
console.time("fib2--内存缓存的:");
console.log('fib2--内存缓存的:', fib2(41));
console.timeEnd("fib2--内存缓存的:");

function fib2(n) {
  var result;
  for (var i = 0; i <= n; i++) {
    i === n ? (result = _fib2(n)) : _fib2(n);
  }
  return result;
}
function _fib2 (n) {
  if (a[n]) {
    return a[n];
  }
  var result;
  if (n <= 1 ) {
    return 1;
  } else {
    result = _fib2(n - 1) + _fib2(n - 2)
  }
  a[n] = result;
  return result;
}

你可能感兴趣的:(JS:菲波那切数列--普通方式+数组缓存形式)