目前,我将 for 循环实现为递归方法。
for i in range(len(list)):
**implementation code goes here**
我如何将其实现为递归方法?
我计划浏览一个列表,检查每个项目是否在另一个可接受的可能值列表中。如果是这样,我会对其采取某些行动。否则,我会做其他动作。
标准结构递归公式(如果您使用像Scheme这样的函数式语言,则使用该公式)将递归地解构列表:
func([]) => nothing
func([x, ...]) => do_stuff(x), func([...])
因此,执行此操作的“功能”方法是采用单个列表(而不是索引),并在较小的列表上递归:
def rec_list(l):
if not l: return # empty list case
# process l[0]
return rec_list(l[1:])
请注意,这是非常非常低效的,因为l[1:]
,但它是理解更复杂的递归结构(例如二叉树上的递归)的基础。
我们可以用这种结构递归来做一些有趣的事情。例如,以下是用函数式语言反转列表的方法:
def rev_list(l):
if not l: return []
return rev_list(l[1:]) + [l[0]]
(当然,你可以这样做l[::-1]
在Python中,但在这里我们试图展示它是如何递归完成的)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)