Javascript 递归超过了最大调用堆栈大小

Javascript 递归超过了最大调用堆栈大小,javascript,recursion,Javascript,Recursion,正如标题所示,我试图递归地解决一个JavaScript问题。我的互联网编程课的一个练习是反转函数中输入的任何字符串,我认为这是一个用递归解决这个问题的好机会。我的代码: function reverseStr(str){ str = Array.from(str); let fliparray = new Array(str.length).fill(0); let char = str.slice(-1); fliparray.push(char); str.pop();

正如标题所示,我试图递归地解决一个JavaScript问题。我的互联网编程课的一个练习是反转函数中输入的任何字符串,我认为这是一个用递归解决这个问题的好机会。我的代码:

function reverseStr(str){
  str = Array.from(str);
  let fliparray = new Array(str.length).fill(0);
  let char = str.slice(-1);
  fliparray.push(char);
  str.pop();
  str.join("");
  return reverseStr(str);
}
writeln(reverseStr("hello"))

最大的问题是你的函数没有一个结束的基本情况。它需要有一些方法来识别什么时候应该停止,或者它将永远重复

第二个问题是,你似乎不是真的在递归地思考。您正在对该字符串进行一些修改,但是您只需对修改后的字符串再次调用reverseStr,这将再次启动该过程

下面的内容与您的尝试不太相似,我不知道如何挽救您的尝试,但这是一种递归实现反向字符串算法的简单方法

功能反转{ //字符串为0或1个字符。无需反转
如果str.length你的递归没有基本的大小写。结束条件是什么?你能评论一下每一行应该做什么,以及你的递归算法是如何工作的吗?也许可以演示对一个示例字符串应该采取的步骤。仅供参考,你有fliparray,它实际上没有被使用,你有str.join,它没有引用结果是,您正在以令人困惑的方式重用变量。在执行Array.fromstr时创建一个新变量,这样看起来就不会像是在对字符串调用无效的方法。谢谢!我已经根据需要重新编写了代码,但您的响应帮助很大,尽管真正的错误是id10t