python之函数的递归【进阶篇】
2018-02-28 19:30
405 查看
递归1.什么是递归 recursion 递归 递归的定义--------在个一个函数里再调用这函数本身 在一个函数里再调用这个函数本身,这种魔性的使用函数的方式就叫做递归。 递归的最大深度——997 一个函数在内部调用自己 递归的层数在python里是有限制的 997/998层2.层数可以修改 sys模块
1.增强代码的重用性
2.减少代码变更的相互影响
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", [])
【完】
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", [])
【完】
相关文章推荐
- python 函数进阶:参数传递,高阶函数,lambda 匿名函数,global 变量,递归
- python第一站-列表,循环,函数,递归
- python之函数的面向对象【进阶篇】
- python之函数的类的继承【进阶篇】
- 小甲鱼Python教程第22讲--python函数:递归 笔记习题及答案
- Python-18 函数:递归是神马
- 学习笔记-小甲鱼Python3学习第二十二讲:函数:递归是神马
- python之函数的类的内置方法【进阶篇】
- Python:函数5——递归
- 第七篇 python基础之函数,递归,内置函数
- python之函数的定义【进阶篇】
- python练习,函数,内置函数,递归,程序运行顺序测试
- Python 03--函数、递归、内置函数
- 零基础入门学习Python(22)--函数:递归是神马
- python04-函数的定义、调用与递归
- Python与 PHP使用递归建立多层目录函数
- 零基础入门学习Python(22)--函数:递归是神马
- Python函数中多类型传值和冗余参数及函数的递归调用
- python学习笔记12(函数三): 参数类型、递归、lambda函数
- python 函数递归 尾递归