0

我试图了解递归在 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 的 eloquent javascript 中获取此功能

4

4 回答 4

1

你有两个问题:

1 你使用var answer = 0了,你没有分配它来获得结果power

2 在你的函数内部,如果你返回 0 exponent === 0,所以基本上,当指数 = 0 时,你将返回base * power(base, 0)which 等于base * 0which 又等于 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;
于 2013-09-29T21:31:30.413 回答
1

你的幂函数错误

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 = power(5, 10);
于 2013-09-29T21:32:40.500 回答
0
myHeader.innerHTML = power(10,5);

如果您正在寻找一些像 C#: 中的 ref 参数function(param1, param2, ref param3),不,JavaScript 没有这样的参数。

于 2013-09-29T21:30:50.053 回答
0

如果您只是想让电源功能正常工作,那么这是一个更好的解决方案:

document.getElementById("myHeader").innerHTML = Math.pow(10,5);
于 2013-09-29T21:32:41.797 回答