zoukankan      html  css  js  c++  java
  • Python-函数的递归调用

    递归调用顾名思义即在函数内部调用函数(自己调用自己),通常用它来计算阶乘,累加等
     
    注意:
      - 必须有最后的默认结果
        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层
     
  • 相关阅读:
    [转]lftp的致命错误:证书验证:不信任
    github每次push都需要密码以及用户名的解决办法
    Fedora最小化安装后没有ifconfig命令
    [转载]MySql常用命令总结
    chrome浏览器强制采用https加密链接
    红帽系列linux自行配置本地yum源
    linux 下dd命令直接清除分区表(不用再fdisk一个一个的删除啦)
    linux分区工具fdisk的使用
    Java多线程实现......(1,继承Thread类)
    第一篇文章--我为什么要写博客?
  • 原文地址:https://www.cnblogs.com/dachenzi/p/6095687.html
Copyright © 2011-2022 走看看