首页 > 解决方案 > 从它的主体调用函数

问题描述

在发现列表排列的解决方案时,我偶然发现了这个硬编码的答案。我将在这里列出代码:

def permutations(head, tail=''):
    if len(head) == 0: print tail
    else:
        for i in range(len(head)):
            permutations(head[0:i] + head[i+1:], tail+head[i])

permutations('abc')

现在,我完全不明白,当我们从它的主体调用函数时会发生什么。您能否向我解释一下,它为什么起作用,为什么在这里需要它,以及我可以在哪里更详细地了解它。

谢谢!

标签: pythonfunctionrecursion

解决方案


这是一个递归调用。基本上递归是基于一个基本案例,如果满足,它将停止。否则该函数将调用自身。

你可以在这里阅读更多:

https://realpython.com/python-thinking-recursively/

还值得注意的是,虽然递归可以使代码更具可读性,但在 Python 中应谨慎使用递归,因为默认的递归限制相对保守。


推荐阅读