python - 从它的主体调用函数
问题描述
在发现列表排列的解决方案时,我偶然发现了这个硬编码的答案。我将在这里列出代码:
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')
现在,我完全不明白,当我们从它的主体调用函数时会发生什么。您能否向我解释一下,它为什么起作用,为什么在这里需要它,以及我可以在哪里更详细地了解它。
谢谢!
解决方案
这是一个递归调用。基本上递归是基于一个基本案例,如果满足,它将停止。否则该函数将调用自身。
你可以在这里阅读更多:
https://realpython.com/python-thinking-recursively/
还值得注意的是,虽然递归可以使代码更具可读性,但在 Python 中应谨慎使用递归,因为默认的递归限制相对保守。
推荐阅读
- r - 如何根据R中tibble的大小制作动态图形大小?
- javascript - mysql.createConnection 不是 JavaScript 的函数
- java - 在 tomcat 8.5 el-api 上 Spring 迁移 4.3 到 5 错误
- ios - AVAudioPlayer 播放问题,两种声音作为回声
- timestamp - 批量乱序数据导入 QuestDB
- node.js - SailsJS action2 多文件上传
- django - 按用户组过滤 Django 管理站点
- python - 如何检查子字符串是否以相同的顺序出现在父字符串中
- junit - JUnit 5 + Apache Surefire 插件 - 如何使用自定义监听器
- angular - Sass math.div 函数在 Angular 应用程序中未定义,但在 Angular 库中定义