十、python 函数的递归调用

递归:就是函数在内部自己调用自己
递归的注意事项:
必须有最后的默认结果
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目录下的所有文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值