Skip to main content
 首页 » 编程设计

python之如何将 for 循环转换为递归方法

2025年05月04日18insus

目前,我将 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]] 

(当然,您可以只在 Python 中执行 l[::-1],但这里我们试图展示它是如何递归完成的)。