Javascript 使用递归打印从n到1的字符串
我正在尝试使用此递归函数打印从数字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中,但实际上并没
函数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;