python函数之递归函数

递归

基本概念

在计算机编程里,递归指的是一个过程:函数不断引用自身,直到引用的对象已知。

满足条件

1、自己调用自己
2、必须有一个明确的结束条件

优缺点

优点:

  • 逻辑简单,定义简单
  • 代码整洁
  • 将复杂的任务分解为简单的子问题
  • 比嵌套迭代更容易

缺点:

  • 容易导致栈溢出,内存资源紧张甚至内存泄露
  • 调试困难

递归案例

  1. 计算n的阶乘
def factorial(n):
    if n==1:
        return 1
    fac=n*factorial(n-1)
    return fac
  • 结果
n=5
print('{}的阶乘是{}'.format(n,factorial(n)))

5的阶乘是120
  1. 计算自然数1至n的和
def Summation(n):
    if n==1:
        return 1
    else:
        sum=n+Summation(n-1)
        return sum
  • 结果
n=5
print('1到{}的和是{}'.format(n,Summation(n)))

15的和是15

3.求斐波那契数列第n位的数
(指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)。这个数列从第3项开始,每一项都等于前两项之和。)

def Fibonacci(n):
    if n==0 or n==1:
        return n
    else: 
        result=Fibonacci(n-2)+Fibonacci(n-1)
        return result
  • 结果
n=9
print('斐波那契数列第{}项是{}'.format(n,Fibonacci(n)))  

斐波那契数列第9项是34

4.模拟树形结构遍历文件夹中的所有文件

#输入path是一个路径,目的:查看里面的所有文件(如果有文件夹要打开文件夹接着查看,直到找到所有文件)
import os
def findFile(path):
    path_file=os.listdir(path)#获取路径path里的所有文件和文件夹
    for fileitem in path_file:#遍历path里的所有文件或者文件夹
        full_path=os.path.join(path,fileitem)#文件或文件夹的完整路径
        if os.path.isdir(full_path):#判断是不是文件夹
            findFile(full_path)#是文件夹 递归
        else:
            print(fileitem)#否则输出文件名
    else:
        return
  • 结果
print(findFile('F:\\社团注册材料'))  

2017---2018学年第一学期社团注册要求.doc
上学年财务总结报告.doc
主要活动介绍.doc
女子协会章程.doc
电信女子协会学期总结.doc
电信女子协会学期计划.doc
社团活动统计表.doc
社团登记表.doc
社团负责人审批表.doc
第一学期社团注册要求.doc
获奖情况.doc
财务审批表.doc
主要活动介绍.doc
女子协会章程.doc
礼仪部11月份工作计划.doc
礼仪部十月份工作总结.doc
社团注册材料.zip
社团活动统计表.doc
社团登记表.doc
社团负责人审批表.doc
获奖情况.doc
财务审批表.doc

这是路径下的所有文件,其中包括两个文件夹
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值