递归算法(python),汉诺塔问题,斐波那契数列,一个简单的递归实例,用递归实现阶乘,用递归查看目录及文件

定义

是一个函数在执行过程中自己调用自己。

代码

汉诺塔问题

#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))

运行结果
在这里插入图片描述

用递归查看目录及文件

#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)

运行结果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/hanhanwanghaha/article/details/107721447