摘要
递归函数
目的
- 递归的定义和注意事项
- 递归函数的常规方法
内容
递归函数
- 函数内部可以调用其他函数,如果一个函数在内部调用自己,就是递归函数
- 例子 阶乘
def diguin(n):
if n == 1:
return 1
else:
return n * diguin(n - 1)
print(diguin(0))
- 递归的优点:定义简单,逻辑清楚。理论上递归函数都可以用循环实现,但没递归逻辑清楚
- 递归缺点:占用内存,使用时候要防止栈溢出
尾递归
- 尾递归可以防止内存溢出
- 尾递归:在函数返回的时候调用自己本身,但return不能包含表达式
- 阶乘尾递归实现
def diguin(n):
return digui(n,1)
def diguin(n,p):
if n == 1:
return p
else:
return digui(n-1, n*p)
总结
- 递归函数的定义和基本使用方法
- 尾递归可以防止栈溢出
##打印目录下所有的文件
import os
import sys
def printFile(path):
lsdir = os.listdir(path)
dirs = (i for i in lsdir if os.path.isdir(os.path.join(path,i)))
files = (i for i in lsdir if os.path.isfile(os.path.join(path,i)))
if files:
for f in files:
print(os.path.join(path,f))
if dirs:
for d in dirs:
#递归调用
printFile(os.path.join(path,d))
printFile(sys.argv[1])