Javascript 使用递归打印从n到1的字符串

Javascript 使用递归打印从n到1的字符串,javascript,recursion,Javascript,Recursion,我正在尝试使用此递归函数打印从数字n到1的字符串: 函数numStr(n){ 让outputStr=''; 如果(n==1){ 返回outputStr+n; }否则{ outputStr+n; 返回numStr(n-1); } } console.log(numStr(5))//如果打印54321看起来你犯了一个简单的错误,你写道 outputStr + n; 而不是 outputStr = outputStr + n; 或 当n=1那么您只是将n附加到变量ouputStr中,但实际上并没

我正在尝试使用此递归函数打印从数字n到1的字符串:

函数numStr(n){
让outputStr='';
如果(n==1){
返回outputStr+n;
}否则{
outputStr+n;
返回numStr(n-1);
}
}

console.log(numStr(5))//如果打印54321
看起来你犯了一个简单的错误,你写道

outputStr + n;
而不是

outputStr = outputStr + n;


n=1
那么您只是将
n
附加到变量
ouputStr
中,但实际上并没有返回此
outputStr
值。将代码更改为:

函数numStr(n){
如果(n==1){
返回“1”;
}否则{
返回n+numStr(n-1);
}
}

console.log(numStr(5))//如果打印54321,我认为outputStr的范围不正确。每次调用numStr时,outputStr都会重置为空字符串,因此在返回时只会得到outputStr的最后一个值,即1。

下面是另一个可行的递归:

constnumstr=n=>n>0?n+numStr(--n):“”;

console.log(numStr(5));//54321
您是否尝试过使用调试器逐行检查代码?尤其是这行
outputStr+n可能很有趣。是的,这是一个很小的问题。我想我只是太傻了,没怎么注意。我没有返回“outputStr”。谢谢。这将如何改变结果?这仍然不起作用。正如@WinterSoldier所回答的,我只是忘记了返回字符串,因为在每种情况下只返回1。我怎么没有看到这一点!非常感谢!
outputStr += n;