2025年3月25日 星期二 甲辰(龙)年 月廿四 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

Python-函数的递归调用

时间:09-13来源:作者:点击数:37

递归调用顾名思义即在函数内部调用函数(自己调用自己),通常用它来计算阶乘,累加等

注意:

  - 必须有最后的默认结果

    if n ==0,(不能一直调用自己,如果没有可能会造成死循环)

  - 递归参数必须向默认的结果收敛

    func(n-1)

例子1:计算5的阶乘

  • #!/usr/bin/env python
  • def func(n):
  •   if n == 0:
  •     return 1
  •   else:
  •     return n * func(n-1)
  • print func(5)

例子2:计算1到100的和

  • #!/usr/bin/env python
  • def func(n):
  •   sum = 0
  •   if n == 0:
  •     return 0
  •   else:
  •     return n + func(n-1)
  • print func(100)

例子3:用递归的方法打印目录下的所有文件名

  • #!/usr/bin/env python
  • import os
  • import sys
  • def listdir(n):
  •   lsdir = os.listdir(n)
  •   for i in lsdir:
  •     if os.path.isfile(os.path.join(n,i)):
  •       print os.path.join(n,i)
  •     else:
  •       listdir(os.path.join(n,i))
  •       listdir(sys.argv[1])

改进版:

  • #!/usr/bin/env python
  • import os
  • import sys
  • def print_file(path):
  •   lsdir = os.listdir(path)
  •   files = [ i for i in lsdir if os.path.isfile(os.path.join(path,i)) ]
  •   dicts = [ i for i in lsdir if os.path.isdir(os.path.join(path,i)) ]
  •   if files:
  •     for i in files:
  •       print os.path.join(path,i)
  •   if dicts:
  •     for f in dicts:
  •       print_file(os.path.join(path,f))
  •       print_file(sys.argv[1])

用到的模块

  os.path.isdir()

    - 判断后面的文件是否是目录,是的话返回True(不能判断目录是否存在,不存在也会返回false)

  os.path.isfile()

    - 判断后面的文件是否是文件,是的话返回True(不能判断文件是否存在,不存在也会返回false)

  os.path.join()

    - 连接括号中的路径(文件)

    os.path.join('/etc/','passwd','abc') ----> /etc/passwd/abc

注意

  Python3默认递归的深度不能超过100层

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门