嗨,我想了解递归是如何工作的。我知道递归反复调用自己。我很想知道递归是否可以用来解决简单的问题,比如创建从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))
我陷入了让递归版本工作的困境。程序将只返回一个值列表。请告诉我我是否采取了错误的方法来解决这个问题
您的问题是递归函数必须返回上一级别的值。递归函数还必须有一个终止条件,这样它就不会一直调用自己。列表函数是一个有趣的示例,您要做的是生成列表的一个元素和一个较短的列表:
Mark和RufusVS解释得很好,但是如果你想了解你的代码,因为你问你做错了什么。这是:
您不需要第二个函数或任何外部变量。您只需要一个边条件就可以知道何时停止,然后再执行递归。在这里,有些东西可以创建列表的一部分,然后递归得到其余部分
首先考虑边缘情况,然后考虑一个递归调用会发生什么,这通常是有帮助的
您还需要记住从函数返回(并考虑边缘条件应该返回什么(例如空列表):
相关问题 更多 >
编程相关推荐