我在 JavaScript 中定义了以下函数:
function rfactorial(n, f) {
if (n == 0) {
return f;
}
rfactorial(n-1, f*n);
}
function dofactorial(){
var n = prompt("Enter number");
var f = rfactorial(parseInt(n), 1);
alert("Factorial = " + f);
if (confirm("Do another one?")) {
dofactorial();
}
}
问题在于,在dofactorial()
中,f
是未定义
。这很奇怪,因为如果我检查 rfactorial() 中的 f 值,它会在返回之前正确计算。我做错了什么?
最佳答案
function rfactorial(n, f) {
if (n == 0) {
return f;
}
return rfactorial(n-1, f*n);
}
function dofactorial(){
var n = prompt("Enter number");
var f = rfactorial(parseInt(n), 1);
alert("Factorial = " + f);
if (confirm("Do another one?")) {
dofactorial();
}
}
dofactorial()
注意 return rfactorial(n-1, f*n); 你忘记返回
关于javascript - 递归函数返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20018607/