Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.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 递归,将函数作为参数传递_Javascript - Fatal编程技术网

Javascript 递归,将函数作为参数传递

Javascript 递归,将函数作为参数传递,javascript,Javascript,我想使用递归运行函数一定次数,例如:repeatconsole.log'Hello',3应该打印Hello 3次。我试图实现这样的功能,但它只打印一个单词Hello 函数w,x{ 让乐趣=功能{ 返回参数 } 如果x==1{ 返回funw } 否则{ 返回funw+重复funw,x-1 } } repeatconsole.log'Hello',3您没有将函数作为参数传递。您正在调用函数并传递其返回值 只需传递乐趣,无需参数列表。在初始调用中,可以使用匿名函数 函数,x{ 如果x==1{ 还钱

我想使用递归运行函数一定次数,例如:repeatconsole.log'Hello',3应该打印Hello 3次。我试图实现这样的功能,但它只打印一个单词Hello

函数w,x{ 让乐趣=功能{ 返回参数 } 如果x==1{ 返回funw } 否则{ 返回funw+重复funw,x-1 } }
repeatconsole.log'Hello',3您没有将函数作为参数传递。您正在调用函数并传递其返回值

只需传递乐趣,无需参数列表。在初始调用中,可以使用匿名函数

函数,x{ 如果x==1{ 还钱 }否则{ 返回乐趣+重复乐趣,x-1 } } 重复=>console.logHello,3;
console.logrepeata=0=>a+1,5 您没有将函数作为参数传递。您正在调用函数并传递其返回值

只需传递乐趣,无需参数列表。在初始调用中,可以使用匿名函数

函数,x{ 如果x==1{ 还钱 }否则{ 返回乐趣+重复乐趣,x-1 } } 重复=>console.logHello,3;
console.logrepeata=0=>a+1,5 代码中的一些错误:

您没有将函数作为参数传递。 您不需要使用+使两个函数互相紧跟运行。从您最初的代码片段中,我推断您只关心副作用,而不关心值。因此,您可以单独调用这些函数。 它可能看起来像这样:

函数,x{ 如果x<1 return;//尝试已用尽,请终止 fun;//副作用打印到控制台 repeatfun,x-1;//递减计数器并尝试继续 }
repeatfunction{console.loghello},3 代码中的一些错误:

您没有将函数作为参数传递。 您不需要使用+使两个函数互相紧跟运行。从您最初的代码片段中,我推断您只关心副作用,而不关心值。因此,您可以单独调用这些函数。 它可能看起来像这样:

函数,x{ 如果x<1 return;//尝试已用尽,请终止 fun;//副作用打印到控制台 repeatfun,x-1;//递减计数器并尝试继续 }
repeatfunction{console.loghello},3 这段代码有一个递归函数,它接受一个函数并执行它的次数。 函数repeatfunc,x{ ifx==0返回; funcx; repeatfunc,x-1; }
repeatx=>{console.log`Hello${x}`},3 这段代码有一个递归函数,它接受一个函数并执行它的次数。 函数repeatfunc,x{ ifx==0返回; funcx; repeatfunc,x-1; } repeatx=>{console.log`Hello${x}`},3 调用函数repeatconsole.log'Hello',3时,您将函数console.log'Hello'的返回值分配为参数w的值。这会导致函数只显示一个控制台日志,并将未定义的参数分配给w。您要寻找的可能是将函数引用作为第一个参数传递,将该函数的参数作为第二个参数传递,并将调用次数作为第三个参数传递

函数repeatfunc,参数,x{ 如果x==1{ 返回func.callthis,参数; } 否则{ return func.callthis,arguments+repeatfunc,arguments,x-1 } } repeatconsole.log,'Hello',3 调用函数repeatconsole.log'Hello',3时,您将函数console.log'Hello'的返回值分配为参数w的值。这会导致函数只显示一个控制台日志,并将未定义的参数分配给w。您要寻找的可能是将函数引用作为第一个参数传递,将该函数的参数作为第二个参数传递,并将调用次数作为第三个参数传递

函数repeatfunc,参数,x{ 如果x==1{ 返回func.callthis,参数; } 否则{ return func.callthis,arguments+repeatfunc,arguments,x-1 } }
repeatconsole.log,'Hello',3 您需要传递一个函数,并可能使用类似于{}的iterar来重复x次

函数w,x{ 对于设i=0;irepeat=>console.logFoo,4您需要传递一个函数,并可能使用类似于{}的iterar来重复x次

函数w,x{ 对于设i=0;irepeat=>console.logFoo,4您是否可以添加一个关于如何最初调用此函数的示例?@Nicolas他在文本中添加了一个关于如何最初调用此函数的示例?@Nicolas他在文本中添加了一个示例。但是,将值一起添加是没有意义的。这种类型的函数不是用来代替reduce,而是用来限制副作用的执行,如下面的例子所示
e表示相加的感觉。当然,这意味着该函数不能用于其他组合操作。是的,您的第二个示例确实显示了这一点,因此我对reduce进行了评论。我认为,原始代码片段中的+不是故意的,而是来自于对如何在这种场景中控制流的一般误解。不管怎样,好答案很好。我试图避免在他的代码中更改太多内容。如果你在回答中解释为什么不合适,我会投你一票。不过,把价值加在一起是没有意义的。这种类型的函数不是用来代替reduce,而是用来限制副作用的执行,如下面的例子所示。当然,这意味着该函数不能用于其他组合操作。是的,您的第二个示例确实显示了这一点,因此我对reduce进行了评论。我认为,原始代码片段中的+不是故意的,而是来自于对如何在这种场景中控制流的一般误解。不管怎样,好答案很好。我试图避免在他的代码中更改太多内容。如果你在回答中解释为什么它不合适,我会支持你。显然,使用递归是一项要求。我猜,这是某种课程作业。如果是一项要求,我想最好的答案是:显然,使用递归是一项要求。我猜,这是某种课程作业。如果是要求,我想其他答案最好是:D