Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 来自jquery函数的日志递归_Javascript_Jquery_Recursion - Fatal编程技术网

Javascript 来自jquery函数的日志递归

Javascript 来自jquery函数的日志递归,javascript,jquery,recursion,Javascript,Jquery,Recursion,我试图用递归函数和jQuery计算一个序列,但我不知道如何记录函数进行的每个递归,以便获得序列成员 代码如下: $(document).ready(function () { $("#button").click(function () { var n = $("#number").val(); function series(n) { if (n == 1) { return 6;

我试图用递归函数和jQuery计算一个序列,但我不知道如何记录函数进行的每个递归,以便获得序列成员

代码如下:

$(document).ready(function () {
    $("#button").click(function () {
        var n = $("#number").val();
        function series(n) {
            if (n == 1) {
                return 6;
            } else {
                return 0.5 * series(n - 1) + 4;
            }
        }
        console.log(series(n));
    });
});
问题是该函数只记录最后一个系列成员。例如,如果
n=4
序列应该是6、7、7.5、7.75

该函数仅返回7.75

这是级数公式:
series(n)=0.5*级数(n-1)+4
,如果
n=1
,则
series(n)=6

谢谢大家!

您使用的
console.log()
仅接受最外面的系列调用的输出。如果要记录每次迭代,您需要在series方法中记录,或者在series方法中跟踪迭代期间的每个结果,然后记录用于跟踪的内容

这看起来像是家庭作业,所以我不会透露太多,但它可能有助于浏览器中的检查器了解执行情况,并了解代码是如何流动的。

试试这个

$(document).ready(function () {
    $("#button").click(function () {
        var n = $("#number").val();
        function series(n) {
            var val=6;
            if (n != 1) {
               val= 0.5 * series(n - 1) + 4;
            }
            console.log(val);
            return val;
        }
    });
});

这并不是最漂亮的示例,但是如果您将代码封装到另一个带有结果数组的函数中。然后调用内部递归函数并将它们存储到该数组中,这样就可以将结果作为数组返回。然后,您可以使用连接将其转换为字符串,以便使用jQuery或控制台记录它来显示

小提琴:


这不是家庭作业。我想学习递归函数。我曾尝试将
console.log(series(n))
放在函数中,但它返回“超过最大调用堆栈大小”。如何跟踪每次迭代?我尝试过使用“counter”变量,但不起作用。将它们存储在数组中如何?对于创建递归函数的方式,“超出了最大调用堆栈大小”是一个基本问题。快速提问:如果
n
从不为1,会发生什么情况?n每次都必须为1,因为序列必须返回n的每个值,直到它达到给定给序列(n)的值为止。例如,如果我想要系列(7),函数必须返回:系列(7)、系列(6)、系列(5)、系列(4)、系列(3)、系列(2)、系列(1)。还有,Josh,我不在乎将值存储在数组中,我只是不知道如何打印每个迭代的异常值。它不会返回任何内容:(在打印输出后返回到VALL,在完成后完成任务,但是它是如此复杂。在Visual Basic或C++中,更容易。没有数组涉及,只是PUEL递归和迭代打印。我会继续调查,必须有一个更简单的方法来做它!
function getSeriesArray(n) {
    var results = [];
    function series(n) {
        if (n === 1) {
            results.push(6);
            return 6;
        } else {
            var result = 0.5 * series(n - 1) + 4;
            results.push(result);
            return result;
        }
    }
    series(n);
    return results;
}