首页 > 解决方案 > 是否可以仅使用 for 循环来实现包含 for 循环的递归函数,该循环包含对上述函数的调用?

问题描述

已经提出了类似的问题,并且普遍的共识是任何东西都可以从递归转换为 for 循环,反之亦然。但是,我找不到将以下伪代码类型的函数转换为 for 循环的方法:

def recursive(n):
    if n == 0:
        return
    for i in range(some_number):
        do_sth...
        recursive(n-1)

在这种情况下,有 n 个嵌套循环,并且 n 根据给定的参数而变化。仅使用 for 循环时,嵌套循环的数量似乎总是在代码中预先确定,它不会因“输入”而异。有没有办法只使用 for 循环来制作这样的东西?

标签: loopsfor-looprecursionnested-loopstheory

解决方案


有没有办法只使用 for 循环来制作这样的东西?

好吧,如果您承认while循环是伪代码for循环的情况,那么至少可以制作您的示例:

def nonrecursive(n):
  a = []
  z = 0
  while n:
    while n:
      i = z
      if i == some_number: break
      print((n, i))
      a += [[n, i]]
      n -= 1
      z = 0
    if not a: break
    n, i = a.pop()
    i += 1
    z = i

推荐阅读