JavaScript未返回值

时间:2018-10-03 15:41:16

标签: javascript recursion return-value

以下是一个非常简单的递归函数的示例。按照编写的方式,代码会将所有==的值记录到n,但不会在if语句的代码块中返回字符串值。有人可以解释这种行为吗?

先感谢有足够热情回答这个问题的人。

注意:我的原始帖子省略了if语句。此后,我对其进行了更新。

function recursiveFunction(n) {
        console.log(n)
        if(n <= 1) {
            return "done";
        } 
        else {
        recursiveFunction(--n);
        }
    }
recursiveFunction(5);

4 个答案:

答案 0 :(得分:0)

function recursiveFunction(n) {
        console.log(n)
        if(n==0){            //you need an if statement        
            return  "done"
        } else {            
            return recursiveFunction(--n)     // return the recursive function   
        }                                     // with --n else there's no return
                                              // except when evaulated at 0
       
    }
  console.log(recursiveFunction(5))

答案 1 :(得分:0)

function recursiveFunction(n) {
        console.log(n)
        if(n==0){            //you need an if statement        
            return  "done"
        }         
         return   recursiveFunction(--n)     
       
    }
  console.log(recursiveFunction(5))

答案 2 :(得分:0)

尝试添加if语句。我认为它会起作用。

:)

答案 3 :(得分:0)

好,我知道了。我无意中在原始帖子中省略了if语句,并自此对其进行了更新-抱歉造成混乱。但是,我不想忽略的是else语句后的return关键字。我以为一个函数中只能有一个return语句,但是由于我正在使用递归,因此else语句之后的return语句对于将新值返回给函数声明是必要的。因此,else块内的return语句向函数本身返回一个值,而if块中的return语句向外部函数调用返回一个值。如果在else块内未使用return语句,它将向未定义的外部函数调用返回一个值。我感谢每个人为帮助我得出这个结论所做的努力。请让我知道这是否有意义,或者我是否得出了错误的结论。干杯

function recursiveFunction(n) {
        console.log(n)
        if(n <= 1) {
            return "done";
        } 
        else {
            return recursiveFunction(--n); // added the return keyword
        }
    }
recursiveFunction(5);