摘要

递归函数

目的

  • 递归的定义和注意事项
  • 递归函数的常规方法

内容

递归函数
  • 函数内部可以调用其他函数,如果一个函数在内部调用自己,就是递归函数
  • 例子 阶乘
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])

posted on 2018-01-04 23:08  siaspedro  阅读(106)  评论(0编辑  收藏  举报