javascript 递归函数工作不正常

7fyelxc5  于 2022-12-25  发布在  Java
关注(0)|答案(5)|浏览(116)

我像这样创建了递归函数。

function countDown(count){
    if(count==0){
        return;
    }
   countDown(count-1)
}

console.log(countDown(5))

这个函数返回未定义的值,而不是从5到1的数字。我做错了什么?

eoigrqb6

eoigrqb61#

考虑您的代码:

function countDown(count){
    if(count==0){
        return;
    }
   countDown(count-1)
}

如果名为“count”的变量等于零,则不返回任何值。
因此,未定义。
如果您打算打印数字5 - 1,请按如下方式更改代码:

function countDown(count){
    if(count==0){
        return;
    }

console.log(count);
   countDown(count-1)
}

countDown(5);
zkure5ic

zkure5ic2#

你必须返回一个递归函数调用

function countDown(count) {
  if(count==0){
    return;
  }
  console.log(count);
  return countDown(count - 1);
}
uoifb46i

uoifb46i3#

什么都不返回,所以很明显它是未定义的。

function countDown(count){
    if(count==0){
        // you should return a value if you want value instead of undefined
        return 100;
    }
   countDown(count-1)
}

console.log(countDown(5))
mnowg1ta

mnowg1ta4#

您不需要在函数内部打印。

function countDown(count) {
    if (!count) return;
    console.log(count);
    countDown(count - 1);
}

countDown(5);
11dmarpk

11dmarpk5#

基本上,你并不是从这个函数返回一个值,它只是在每次迭代中得到一个未定义的返回值
缺省情况下,任何普通函数(同步)都将返回undefined或类型为void
https://www.geeksforgeeks.org/what-is-void-and-when-to-use-void-type-in-javascript/
在本例中,在再次调用递归函数之前,最好添加一个count变量的console.log,并且调用时不使用console.log(yourFunction)

function countDown(count){
  if (count === 0) return;
  console.log(count); // Just log it here
  countDown(count - 1);
}

countDown(5);

相关问题