https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
让这个可爱的宝藏女孩在努力的道路上与你一起同行!
如有转载,请注明出处(如不注明,盗者必究)
目录
- 定义
- 代码
- 汉诺塔问题
- 斐波那契数列
- 一个简单的递归实例
- 用递归实现阶乘
- 用递归查看目录及文件
定义
是一个函数在执行过程中自己调用自己。
注意:我们要设置递归边界,就是递归的终止条件,如果不设置的话就会进入死循环
代码
汉诺塔问题
#coding= utf-8# 定义一个函数,表示将a的n个盘子借助b搬到c abc表示三根柱子 Hanoi(移动数,开始柱,中转柱,目标柱)
def Hanoi(n,a,b,c):# 如果只剩下一个盘子,直接将a上的盘子搬去cif n==1:print(a,"-->",c)return 0#将a上的n-1个盘子借助c搬到bHanoi(n-1,a,c,b)print(a,"-->",c)#将b上的n-1个盘子借助a搬到cHanoi(n-1,b,a,c)Hanoi(n=3,a="A",b="B",c="C")
运行结果
斐波那契数列
#coding= utf-8
def Fibonacci(n):if n == 1 or n == 2:return 1else:# 自己调用自己return Fibonacci(n - 1) + Fibonacci(n - 2)
for i in range(1, 8):print('第%d个数' % i, Fibonacci(i))
运行结果
一个简单的递归实例
#coding= utf-8# 递归即自己调用自己
num = 0
def a():global numnum +=1print("a被执行了",num,"次")if num<5:a()# 通过递归可以打印c
def b():print('我是b')c()
def c():print('我是c')a()
b()
运行结果
用递归实现阶乘
#coding= utf-8# 使用递归求阶乘
# (6!=6*5*4*3*2*1)
def factorial(n):if n==1:return nelse:return n*factorial(n-1)print(factorial(6))
运行结果
https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
让这个可爱的宝藏女孩在努力的道路上与你一起同行!
如有转载,请注明出处(如不注明,盗者必究)
用递归查看目录及文件
#coding= utf-8import os# 增加一个blank,下一层的目录就会空格显示
def getAllFiles(path,level):filesList = os.listdir(path)# 遍历该文件夹下的所有目录或者文件for file in filesList:filepath = os.path.join(path,file)# 如果是目录,就据需往下找if os.path.isdir(filepath):getAllFiles(filepath,level+1)print("\t"*level+filepath)getAllFiles("F:\Z\zzz",0)
运行结果