递归算法的介绍(Python)

本文介绍了Python中的递归函数概念,包括递归的基本原理、编程思维和算法应用,如斐波那契数列、阶乘计算和猴子吃桃问题。重点讲解了递归的两个关键元素——递归点和出口,并通过实际例子演示了如何设计和实现递归函数。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值