您的位置:首页 > 编程语言 > Python开发

python之函数的递归【进阶篇】

2018-02-28 19:30 405 查看
递归1.什么是递归 recursion 递归      递归的定义--------在个一个函数里再调用这函数本身      在一个函数里再调用这个函数本身,这种魔性的使用函数的方式就叫做递归      递归的最大深度——997    一个函数在内部调用自己 递归的层数在python里是有限制的 997/998层2.层数可以修改 sys模块
1 import sys  #python限制在997/998
2 sys.setrecursionlimit(10000000)  #可以修改
3 COUNT = 0
4 def func():  #recursion 递归
5     global COUNT
6     COUNT += 1
7     print(COUNT)
8     func()
9
10 func()
3.解耦要完成一个完整的功能,但这个功能的规模要尽量小,并且和这个功能无关的其他代码应该和这个函数分离
1.增强代码的重用性
2.减少代码变更的相互影响
4.实例一,求年龄
1 #写递归函数必须要有一个结束条件
2 #sj
3 #1 sj egon + 2 n=1 age(1) = age(2) + 2
4 #2 egon wusir + 2 n=2 age(2) = age(3) + 2
5 #3 wusir + 2 n=3 age(3) = age(4) + 2
6 #4 40 n=4 age(4) = 40
7
8 def age(n):
9 if n == 4:
10 return 40
11 return age(n+1)+2
12
13 # age(1) #46
14 # def age(1):
15 # return 46
16 # age(1)=age(2)+2=age(3)+2+2=age(4)+2+2+2
17 # def age(2):
18 # return 44
19 #
20 # def age(3):
21 # return 42
22 #
23 # def age(4):
24 # if 4 == 4:
25 # return 405.实例二,求阶乘
1 #求阶乘 n = 7 7*6*5*4*3*2*1
2 def func(n):
3 if n == 1:
4 return 1
5 else:
6 return n*func(n-1)
7
8 ret = func(4)
9 print(ret)
10
11 # #n = 4
12 # def func(4):
13 # return 24
14 # 4*3*2*1
15 # #n = 3
16 # def func(3):
17 # return 6
18 #
19 # #n = 2
20 # def func(2):
21 # return 2
22 #
23 # #n = 1
24 # def func(n):
25 # if n == 1:
26 # return 16.实例三,递归遍历目录和文件

#!/usr/bin/python  
#coding:utf8  
import os  
def dirlist(path, allfile):  
    filelist =  os.listdir(path)      列出目录下的文件
    for filename in filelist:  
        filepath = os.path.join(path, filename)    为文件添加绝对路径
        if os.path.isdir(filepath):           如果文件为目录
            dirlist(filepath, allfile)        继续递归
        else:  
            allfile.append(filepath)           不是文件就将路径放置列表中
    return allfile  
print dirlist("/home/yuan/testdir", [])   
 【完】
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: