递归

159 阅读1分钟

何为递归,大师 L. Peter Deutsch 说过:To Iterate is Human, to Recurse, Divine.中文译为:人理解迭代,神理解递归。

递归即为自己调用自己

三要素:

  • 明确递归终止条件
  • 给出递归终止时处理方法
  • 提取重复逻辑,缩小问题规模

斐波那契数列

def fun(n):
# print(n)    
	if n <= 1:        
    	return n    
    return fun(n - 1) + fun(n - 2)

fun(4)

执行顺序

实现tree命令

import os
def tree(path, layer=0):
	listdir = os.listdir(path)
	for index, file in enumerate(listdir):
		file_path = os.path.join(path, file)
		print("|  " * (layer - 1), end='')
		if layer > 0:
			print('\__' if index == len(listdir) - 1 else '|--', end='')
		print(file)
		if os.path.isdir(file_path):
			tree(file_path, layer + 1)

tree('..')

阶乘

def fun2(n):
	if n == 1:
    	return n
    return n * fun2(n - 1)
    
print(fun2(3))