对递归的深入理解和定义

定义

举例说明,什么是递归 ?

使用 5 的阶乘来举例,了解什么是递归?

Untitled

书写一个函数

这个函数内部自己会调用自己,从而形成递归

function factorial(n) {
  // 函数的功能是计算n的阶乘,n的阶乘是 n*(n-1)的阶乘
  // n! = n * (n-1)!

  if (n == 1) return 1;
  // 如果询问的不是1的阶乘,就返回 n * (n-1)
  return n * factorial(n - 1);

  // 三目运算符
  // return n == 1 ? 1 : n * factorial(n - 1);
}

// 调用函数
var result = factorial(5);
// 输出结果
console.log(result);

递归,简单理解就是函数内部调用函数自身,达到某个条件之后,停止调用。

递归常规算法题

斐波那契数列

// 编写一个函数,这个函数的功能是返回斐波那契数列中下标为n的那项的值
function fib(n) {
  // 数列的下标为0的项和下标为1的项值是1
  if (n == 0 || n == 1) return 1;
  // 斐波那契数列的本质特征就是每一项,等于前面两项的和
  return fib(n - 1) + fib(n - 2);
}

// 书写一个循环语句,计算斐波那契数列的前15项
for (var i = 0; i < 15; i++) {
  console.log(fib(i));
}