javascript - 这段代码的 else block 的逻辑是什么?

标签 javascript

我很难理解 else block 。我知道它应该将基参数提高到指数参数。但它是如何工作的呢?

var power = function(base, exponent){

    if (exponent === 0){
        return 1;
    }
    else{
        return base * power(base, exponent - 1);
    }

};

power(2, 2);

最佳答案

power(base, exponent - 1)

实际上只是base * power(base, exponent - 1)。但如果我们继续思考这些函数调用中发生了什么,我们就会看到:

base * ... pow(base, exponent - n)

让我们尝试一下power(2, 4):

2 * (2 * (2 * (2 * (1))))

2 * power(2, 4 - 1);

power(2, 4 - 1) 简化为

2 * power(2, 3 - 1)

简化为

2 * power(2, 2 - 1)

简化为

2 * power(2, 1 - 1)

并且简化为1,因为指数将为0。当我们把它们放在一起时,这就是我们得到的:

2 * 2 * 2 * 2 * 1

关于javascript - 这段代码的 else block 的逻辑是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12877504/

相关文章:

javascript - 参数后缺少 ) 但仅适用于长字符串

javascript - D3 : skip null values in line graph with several lines

javascript - javascript同步函数可以并发调用吗

javascript - 手动显示从 Google Places API 返回的地点列表

javascript - 少任务未找到错误

javascript - 对话框中的按钮不会回发

javascript - 为什么这段代码返回未定义?

javascript - Kendo GRID - 单击 "Add new row"按钮后获取 kendo grid Uncaught TypeError : Cannot read property of 'name' null

Javascript 静态方法与性能上的原型(prototype)/实例化方法

javascript - 如何在 Angular2 中导入 d3pie.js TypeScript 定义