以下是一个非常简单的递归函数的示例。按照编写的方式,代码会将所有==的值记录到n,但不会在if语句的代码块中返回字符串值。有人可以解释这种行为吗?
先感谢有足够热情回答这个问题的人。
注意:我的原始帖子省略了if语句。此后,我对其进行了更新。
function recursiveFunction(n) {
console.log(n)
if(n <= 1) {
return "done";
}
else {
recursiveFunction(--n);
}
}
recursiveFunction(5);
答案 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);