这种递归如何工作并得到这种输出?

时间:2016-02-16 19:47:44

标签: javascript function recursion return

这是一个使用递归方式的基本指数函数。我确实理解递归是如何工作的,但我很难看到它如何通过返回函数本身返回基数

function exponent(b,n){
    if(n == 0){
        return 1;
    }else if(n == 1){
        return b;
    }
    return exponent(b,n-1);
    // return b*exponent(b,n-1);
}

console.log(exponent(7,2));  //7

我评论了实际输出,因为我试图了解exponent(b,n-1)的含义,我真的不明白返回exponent(b,n-1)将如何给出基数作为结果?< / p>

1 个答案:

答案 0 :(得分:2)

递归是函数调用自身的过程。

开头的特殊条件n == 0n == 1打破了无限的自我调用链,因此一旦n缩减为10 ,该函数停止调用自身。

因此,对于exponent(7,2),它是:

  1. n == 2,返回7 *指数(7,1)
  2. n == 1,返回7
  3. 如果我们将结果合并为exponent(7,2) = 7*exponent(7,1) = 7*7 = 49