Javascript (非常简单的递归)我缺少什么?

Javascript (非常简单的递归)我缺少什么?,javascript,recursion,Javascript,Recursion,我看不出这个递归调用缺少什么 var power = function(b, e) { if (e===0) { return 1; } else { return b*power(b, e-1); } }; 第一个if语句用于捕捉零次方的数字(那些总是等于1)。但这也是基本情况,所以当e(指数)达到0时,函数退出,留给我正确的答案 这是如何返回正确的数字而不是数字1的?每次,e都会降到0,但它返回的是正确答案,而不是

我看不出这个递归调用缺少什么

var power = function(b, e)
{
    if (e===0)
    {
       return 1;
    }
    else
    {
       return b*power(b, e-1);
    }
};
第一个if语句用于捕捉零次方的数字(那些总是等于1)。但这也是基本情况,所以当e(指数)达到0时,函数退出,留给我正确的答案

这是如何返回正确的数字而不是数字1的?每次,e都会降到0,但它返回的是正确答案,而不是1。对不起,我是一个noob,但我太困惑了…

你有一个递归函数,当它“返回1”时,它会返回堆栈帧,并将1乘以它所叠加的所有其他b变量。1*b*b*b。。。等等

1*任何东西都是标识函数。它返回自身,而不是1。

您有一个递归函数,当它“返回1”时,它将返回堆栈帧,并将1乘以它所叠加的所有其他b变量。1*b*b*b。。。等等


1*任何东西都是标识函数。它返回自身,而不是1。

在堆栈上,将有1*b*b*b*b。。。e时代。当基本情况出现时,堆栈展开并得到正确答案。

在堆栈上,将有1*b*b*b*b。。。e时代。当基本情况出现时,堆栈展开,您得到正确的答案。

假设您执行
power(2,4)
,它将进入
else
并返回
2*power(2,3)
。在返回之前,它必须对返回的表达式求值,因此它会
power(2,3)

这将再次进入
else
返回2*功率(2,2)
。这里也是一样,它必须计算表达式。你一直这样做,直到你得到你的基本情况下,它只是返回1。现在你从最底层转到第二层,它可以返回,因为它将是
2*1
,所以它将进入下一个更高的层,即
2*2*1
,依此类推,直到它到达最顶层并给出你的答案


请参阅(同一问题)以了解更多解释。

假设您执行
power(2,4)
,它将进入
else
并返回
2*power(2,3)
。在返回之前,它必须对返回的表达式求值,因此它会
power(2,3)

这将再次进入
else
返回2*功率(2,2)
。这里也是一样,它必须计算表达式。你一直这样做,直到你得到你的基本情况下,它只是返回1。现在你从最底层转到第二层,它可以返回,因为它将是
2*1
,所以它将进入下一个更高的层,即
2*2*1
,依此类推,直到它到达最顶层并给出你的答案


更多解释请参见(同一问题)。

以下是一个执行示例:

功率=功能(2,2)

2与0不同,然后返回2*函数(2,1)

返回2*2*1

功率=4


下面是一个执行示例:

功率=功能(2,2)

2与0不同,然后返回2*函数(2,1)

返回2*2*1

功率=4


伟大的谢谢你的帮助!对不起,这是一个重复的问题,我是全新的堆栈溢出。。。。以后我会努力寻找更好的。太好了!谢谢你的帮助!对不起,这是一个重复的问题,我是全新的堆栈溢出。。。。以后我会努力寻找更好的答案。好问题,我一开始也看不到答案!啊,奇怪的是,我也有同样的问题。好问题!好问题,一开始我也看不到答案!啊,奇怪的是,我也有同样的问题。好问题!
   -> 1 is different of 0, then return 2*function(2, 0)

           -> 0 equal 0 return 1

   -> return 2*1