javascript - 递归函数返回未定义

标签 javascript

我在 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/

相关文章:

javascript - form.submit() 花费的时间太长

javascript - Electron showOpenDialog 箭头功能(event.send)不起作用

javascript - 使用 document.elementFromPoint 获取附近的路径

javascript - Web 浏览器后退按钮应返回到特定页面

javascript - 使两个元素具有相同的大小

javascript - 为什么不能使用 document.write 来使用 Dom 脚本加载模块?

javascript - 是否可以使用三元运算符执行多个操作

javascript - 实例化一个类,然后将其传递给 setInterval

javascript - V8 引擎是否使用 C++ 替换了以前用 JavaScript 编写的部分代码库?

javascript - 即使我关闭弹出层,弹出页面上的视频仍在播放