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

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不能同时存在吗?

阅读 5.6k
4 个回答

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

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

好好看错误的英文啊。

RangeError: Maximum call stack size exceeded
范围错误:超过的最大调用堆栈大小

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题