Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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_Algorithm_Recursion - Fatal编程技术网

Javascript 为什么这个递归示例给了我一个无限循环?

Javascript 为什么这个递归示例给了我一个无限循环?,javascript,algorithm,recursion,Javascript,Algorithm,Recursion,这快把我逼疯了。 代码如下: function laugh(){ let counter = 10; if(counter <= 0){ return; } else{ console.log('laugh'); counter--; laugh() } } 为什么这会给我一个无限循环,而它应该打印10次“笑”?您已经在函数中定义了计数器,所以每次调用函数时它都会重置为10 设计数器=10; 函数笑{ 如果计数器您已经在函数中

这快把我逼疯了。 代码如下:

function laugh(){
  let counter = 10; 
  if(counter <= 0){
    return;
  } 
  else{
    console.log('laugh'); 
    counter--; 
    laugh()
  }
}

为什么这会给我一个无限循环,而它应该打印10次“笑”?

您已经在函数中定义了计数器,所以每次调用函数时它都会重置为10

设计数器=10; 函数笑{
如果计数器您已经在函数中定义了计数器,那么每次调用函数时它都会重置为10

设计数器=10; 函数笑{
如果计数器变量计数器应该是全局变量。此时,无论何时调用函数,计数器都将始终以10声明和初始化。

变量计数器应该是全局变量。此时,无论何时调用函数,计数器都将始终以10声明和初始化。

与其他变量一样回答说,每一个笑声都创造了一个新的本地计数器

这里最合适的递归方法是将计数器作为参数传递:

函数计数器{
ifcounter像其他答案所说的那样,每一个笑声都会产生一个新的本地计数器

这里最合适的递归方法是将计数器作为参数传递:

函数计数器{ 如果计数器,则应在函数外部定义计数器。这样,计数器始终为10。您应在函数外部定义计数器。这样,计数器始终为10。