https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
让这个可爱的宝藏女孩在努力的道路上与你一起同行!
如有转载,请注明出处(如不注明,盗者必究)
定义
是一个函数在执行过程中自己调用自己。
注意:我们要设置递归边界,就是递归的终止条件,如果不设置的话就会进入死循环
代码
汉诺塔问题
#coding= utf-8
# 定义一个函数,表示将a的n个盘子借助b搬到c abc表示三根柱子 Hanoi(移动数,开始柱,中转柱,目标柱)
def Hanoi(n,a,b,c):
# 如果只剩下一个盘子,直接将a上的盘子搬去c
if n==1:
print(a,"-->",c)
return 0
#将a上的n-1个盘子借助c搬到b
Hanoi(n-1,a,c,b)
print(a,"-->",c)
#将b上的n-1个盘子借助a搬到c
Hanoi(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 1
else:
# 自己调用自己
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 num
num +=1
print("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 n
else:
return n*factorial(n-1)
print(factorial(6))
运行结果
https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
让这个可爱的宝藏女孩在努力的道路上与你一起同行!
如有转载,请注明出处(如不注明,盗者必究)
用递归查看目录及文件
#coding= utf-8
import 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)
运行结果