递归函数里面不能用for循环吗?

发布于 2022-09-03 14:46:44 字数 441 浏览 13 评论 0

var S = 'googlgomglegoogle'
var C = 'google'

var sPositon = 0
function violence1() {
  for (var i in C) {
    if (C.charAt(i) !== S.charAt(sPositon)) {
      sPositon += 1
      violence1()
      break
    }
  }
  console.log(sPositon)
}

violence1()

当我调用这个方法的时候报错

for (var i in C) {
           ^

RangeError: Maximum call stack size exceeded

是因为递归的时候产生了多个for循环吗?多个for不能同时存在吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

时光是把杀猪刀 2022-09-10 14:46:44

可以使用,逻辑写得有问题,内存爆了。

夜空下最亮的亮点 2022-09-10 14:46:44

每次递归调用中,C都不变,那肯定要爆内存的。

云裳 2022-09-10 14:46:44

好好看错误的英文啊。

RangeError: Maximum call stack size exceeded
范围错误:超过的最大调用堆栈大小
无法言说的痛 2022-09-10 14:46:44

你放在for循环里递归,会无限递归下去的,内存爆了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文