[英]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.