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

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)

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

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值