【学习笔记】【算法一】递归

1. 什么是递归?它是如何工作的?

递归是一种解决问题的有效方法,在递归过程中,函数将自身作为子例程调用。简单的来说就是:在自己的函数体中调用自己。
递归,需要有‘递’进关系和‘归’的条件。
举一个简单的例子:求阶乘 n!

# python3
# 递归写法
def factorial(n):
    if n == 1:      # '归'的条件
        return n
    return n * factorial(n-1)  # 递进关系 f(n) = n * f(n-1)

# 普通写法
def factorial1(n):
    result = 1
    for i in range(1, n+1):
        result *= i
    return result
2. 如何递归地解决问题?

从上面的例子可以看出,有‘递’进关系,且有‘归’的条件的问题,都可以用递归算法求解。那么求解这类问题的关键,就是找到这两个要素 ‘递’、‘归’。再举个经典的例子:求第n项斐波那契数列
斐波那契数列:0 1 1 2 3 5 8 … (从第3项开始,每一项等于前两项的和)
即 f(0) = 0, f(1) = 1, f(n) = f(n-1) + f(n-2) (n >=2)

# python3
def fibo(n):
    if n < 2:     # '归'的条件
        return n
    return fibo(n-1) + fibo(n-2) # '递进'关系
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值