递归:就是函数在内部自己调用自己
递归的注意事项:
必须有最后的默认结果
if n ==0
递归参数必须向默认结果收敛的:
factorial(n-1)
递归相乘:
有一个默认值:return 1, 向默认值靠拢: return n*fac(n-1)
#!/usr/bin/python
def fac(n):
if n ==0:
return 1
else:
return n*fac(n-1)
print fac(5)
结果是120
递归相加:
#!/usr/bin/python
def fac(n):
if n ==0:
return 0
else:
return n+fac(n-1)
print fac(100)
结果是5050
三、查询目录下所有文件:
涉及方法:
需要用到os模块的几个函数
检测是否是个目录.
In [5]: os.path.isdir('/home')
Out[5]: True
检测是否是个文件
In [8]: os.path.isfile('/etc/passwd')
Out[8]: True
字符串拼接,常用于路径拼接
In [22]: os.path.join('/etc','passwd','abc')
Out[22]: '/etc/passwd/abc'
打印目录所有文件
#!/usr/bin/python
import os
import sys
def print_files(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:
print_files(os.path.join(path,d)) #递归调用
print_files(sys.argv[1]) #从终端输入参数
测试:
python p_file.py /home
此时会打印/home目录下的所有文件