Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript javscript递归字符串反转_Javascript_String_Recursion - Fatal编程技术网

Javascript javscript递归字符串反转

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 (

我试图自己找到一个递归解决方案来反转字符串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 (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;我试图自己找到一个递归解决方案来反转字符串。这看起来更像是一个学习练习,而不是尝试找到周围最好的反转技术。