繁体   English   中英

递归超出了最大调用堆栈大小

[英]Maximum call stack size exceeded with recursion

顾名思义,我试图递归解决JavaScript问题。 我的Internet编程类的一个练习是将函数中输入的任何字符串都求反,并且我认为这是通过递归解决此问题的好机会。 我的代码:

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() ,这将重新开始整个过程​​。

以下内容与您的尝试并不十分相似(我不知道该如何挽回您的尝试),但这是递归实现反向字符串算法的一种简单方法。

 function reverseStr(str) { // string is 0 or 1 characters. nothing to reverse if (str.length <= 1) { return str; } // return the first character appended to the end of the reverse of // the portion after the first character return reverseStr(str.substring(1)) + str.charAt(0); } console.log(reverseStr("Hello Everybody!")); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM