Javascript javscript递归字符串反转
我试图自己找到一个递归解决方案来反转字符串s,但对于大于1个字符的字符串,它返回“undefined”。 有人能帮我调试一下吗? 我知道这不是一种优雅的方式,但发现错误可以帮助我前进 非常感谢Javascript javscript递归字符串反转,javascript,string,recursion,Javascript,String,Recursion,我试图自己找到一个递归解决方案来反转字符串s,但对于大于1个字符的字符串,它返回“undefined”。 有人能帮我调试一下吗? 我知道这不是一种优雅的方式,但发现错误可以帮助我前进 非常感谢 var revFunc = function (s, r, n, i) { if (i > n) { return r; } r = r + s[n - i]; i++; revFunc(s, r, n, i); }; var reverse = function (
var revFunc = function (s, r, n, i) {
if (i > n) {
return r;
}
r = r + s[n - i];
i++;
revFunc(s, r, n, i);
};
var reverse = function (s) {
var r = "";
var n = s.length - 1;
var i = 0;
if (n < 1) {
return s;
}
return revFunc(s, r, n, i);
};
你能尝试一个简单的解决方案吗:
let str = "hello";
let reverse_str = str.split("").reverse().join("");
你忘了回来
返回revFuncs,r,n,i
更新:
var revFunc = function (s, r, n, i) {
if (i > n) {
return r;
}
r = r + s[n - i];
i++;
return revFunc(s, r, n, i);
};
建议:请为变量使用更好的名称,它很糟糕,r,n,i不适合递归
虽然已经给出的小修改修复了您的函数,但我想指出,这个版本显示了对递归的误解
函数使用递归更新while循环中的局部变量。可以这样重写:
var reverse=函数s{
var r=;
var n=s.长度-1;
var i=0;
如果n<1{
返回s;
}
首先,我要注意缩进。这将使您的代码更易于管理和阅读——对您和我们来说。在再次调用函数之前,您需要一个返回语句。return revFuncs,r,n,i;我试图自己找到一个递归解决方案来反转字符串。这看起来更像是一个学习练习,而不是尝试找到周围最好的反转技术。