栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

递归算法的介绍(Python)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

递归算法的介绍(Python)

1、函数递归概念:理论上,一个函数中可以嵌套另一个函数(即在函数中还可以调用函数)。

而在python中还有另一种:在函数中可调用自身函数(该函数自身),也称为递归函数。

def func():
    #自己调用自己
    func()
    
func()

2、介绍:

①编程思维:将问题拆分成一些数学模型,在用代码实现数学模型的过程。

②算法:指用代码实现数学模型,从而解决对应的业务问题。

③程序=算法+数据结构--->算法最常用的有两种:递推和递归

④递推算法:通过已知条件,利用特定条件,得出中间推论,知道得出结果(正推和逆推)

        递推举例:斐波那契数列,见下图

由上图可知f(1),f(2)--->f(3);f(2),f(3)--->f(4);....f(n)的过程叫做地递推

可用while或for循环:

def recusive(n):
    if n==1 or n==2:
        return 1
    dict = {1:1,2:1}
    for i in range(3,n+1):
        dict[i] = dict[i-1] + dict[i-2]
    return dict[n]
#函数调用
print(recusive(15))

3、递归两个重要的元素:

①递归点:找到解决当前问题的等价函数。

②递归出口:当问题得到解决的时候,以达到最优,不能再次调用函数。(若无就为死循环)

4、函数递归三要素:

①说明函数要干什么

②寻找递归结束条件(在什么条件下,递归停止循环返回结果)

③找到函数的等价关系式

Try:①用递归求斐波那契数列

def f(n):
    if n==1 or n==2:
        return 1
    return f(n-1)+f(n-2)   
print(f(15))

②求n的阶乘(n!=1x2x3x4x5x6x7x8x9.....x(n-1)xn)

def f(n):
    #寻找递归的结束条件
    if n<=2:
        return n
    #等价关系式
    return n*f(n-1)
print(f(5))

③猴子吃桃(若不了解请自行搜索题目)

运用假设法:假设有10个桃子

第一天,吃了一半:10/2=5   5+1=6

第二天                      4/2=2     2+1=3

第三天                       剩1个

第n天                         总数=(第(n+1)天的剩余量+1)*2======》sum=(f(n+1)+1)*2

#确定函数的功能

def f(n):

  if n == 10 :

    return 1

#找等式

  return (f(n+1)+1)*2

#调用函数

print(f(1))

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1015207.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号