嗨,我试图了解递归的工作原理。我知道递归会反复调用自己。我很好奇是否可以将递归用于解决一些简单的问题,例如创建从0到9的列表。这是我要转换为递归的程序:
对于循环版本
def create_list(start, count):
mylist = []
for i in range(start, start + count):
mylist.append(i)
return mylist
the_list = create_list(0, 8)
print(the_list)
递归版本损坏
def create_list(start, count):
mylist = []
mylist = create_list_recurse(start, start + count)
return mylist
def create_list_recurse(start, end):
if start >= end:
return
create_list_recurse(start + 1, end)
print(create_list(0, 9))
我陷入了使递归版本无法正常工作的困境。该程序将仅返回值列表。请告诉我我是否采用错误的方法来解决此问题。
您不需要第二个函数或任何外部变量。您只需要一个边缘条件就可以知道何时停止,然后递归执行。在这里,可以创建列表的一部分并递归以获取其余部分。
首先考虑边缘情况,然后考虑一次递归调用会发生什么,通常会很有帮助。
您还需要记住从函数返回(并考虑边缘条件应返回的内容(例如,空列表):
def create_list_recurse(start, end):
if start > end:
return []
return [start] + create_list_recurse(start + 1, end)
create_list_recurse(0, 9)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
create_list_recurse(3, 1) #edge case returns empty
# []
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句