Javascript 如何返回函数结果并将其设置为标记的innerHTML

Javascript 如何返回函数结果并将其设置为标记的innerHTML,javascript,html,Javascript,Html,我试图理解递归在javascript中是如何工作的。但我甚至在让这个函数正常工作时都遇到了问题 示例问题显示了计算功率和“潜在”将计算结果设置为var my header的innerHTML: var myHeader= document.getElementById("myHeader"); var answer = 0; answer = power(10, 5); function power(base, exponent) { if(exponent =

我试图理解递归在javascript中是如何工作的。但我甚至在让这个函数正常工作时都遇到了问题

示例问题显示了计算功率和“潜在”将计算结果设置为var my header的innerHTML:

var myHeader= document.getElementById("myHeader");
var answer = 0;

answer = power(10, 5);
function power(base, exponent) {
      if(exponent == 0)
       return 0;
      else
       return base * power(base, exponent - 1);
    }
myHeader.innerHTML = answer;
你能编辑这个示例代码使它工作吗?

我只想使用chrome调试器,这样我就可以设置一个断点并逐个遍历函数,以查看操作顺序

我从Marijin Haverbeke的雄辩javascript中获取此函数

myHeader.innerHTML = power(10,5);
如果您正在查找一些ref参数,如C#:
函数(param1,param2,ref param3)
,则不存在,JavaScript没有此类参数。

您有两个问题:

1您使用了
var answer=0
,您没有分配它以从
power
获取结果

2在函数内部,如果指数=0,则返回0,因此基本上,当指数=0时,返回的是
base*power(base,0)
,它等于
base*0
,反过来又等于0,因此函数将始终返回0

var myHeader= document.getElementById("myHeader");
var answer = power(10,5);

function power(base, exponent) {
      if(exponent === 0)
       return 1;
      else
       return base * power(base, exponent - 1);
    }
myHeader.innerHTML = answer;

你的幂函数是错误的

function power(n, p) {
    if(p == 0)
    {
        return 1; // see Math.pow(5, 0) for example
    }
    return power(n, p - 1) * n;
}


如果您只是想让幂函数工作,那么这是一个更好的解决方案:

document.getElementById("myHeader").innerHTML = Math.pow(10,5);

你说它不工作是什么意思?如何将幂函数结果设置为var answer?
answer
设置为0..
answer=power(10,5)?在我的
var i=0的测试中;函数foo(a,b){return++i,foo(a,b);}try{foo();}catch(e){}i我得到的最大堆栈限制为
17904
(x64 Win7上的Google Chrome 29)Oops。保罗·拉德(Paul Rad)在对你的问题的评论中也提到了这一点。这是最好的答案,但我不理解你的解释。@MatthewHarwood我想他是说当你达到
指数===1时,你不应该再出现,因为下一步将使它乘以
0
Ohhh,因为当你乘以0时,它将在最后设置为0是吗?@MatthewHarwood是的,他的解决方案是说如果
base!==0
然后让最后一个返回
1
,而不是
0
。(我总是会自己返回
1
,因为
Math.pow(0,0);/1
)在我可以的时候将它标记为正确
document.getElementById("myHeader").innerHTML = Math.pow(10,5);