Python中的函数递归思想,以及对比迭代和递归解决Fibonacci数列

本文对比了递归与迭代在实现阶乘及Fibonacci数列中的应用,并详细解释了递归的基本概念及其使用时应注意的原则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是递归?简单的说就是:函数自身调用自身。

 

“普通程序员用迭代,天才程序员用递归”

 

虽然递归 在运行时会不断出栈压栈,调用底层的寄存器,造成空间上的占用以及时间上的缓慢,

但在一些算法上面仍然是递归很实用

 

但需要注意的是:

#递归是自己调用自己 很消耗时间,还会有消耗空间的危险,所以递归递归一定要知道“归去来兮”

#所谓“归去来兮”就是指递归的两个原则:
#1.调用了函数自身
#2.设置了自身正确的返回值 (必须有一个正确的返回停止条件,不能无限下去)

 

举简单的例子

 

 

下面是用迭代和递归实现的阶乘的对比:

#用循环函数实现阶乘:
def factorial(n):
    for i in range(1,n):
        n *= i
    return n

#递归版本的阶乘实现:
def factorial(n):
    if n == 1:
        return 1
    else:
        return n * factorial(n-1)

下面是用迭代和递归实现的Fibonacci数列的对比:

# Fibonacci 数列的递归实现:
 
 #1.用迭代的方式实现
def Fibonacci(n):
    n1 = 1
    n2 = 1
    n3 = 2
    if n < 0:
        return -1
        print('Error,please enter a correct month...')
    elif n == 1:
        return n1
    elif n == 2:
        return n2
    else:
        for i in range(3,n+1):
            n3 = n2 + n1
            n1 = n2
            n2 = n3
        return n3

 #2.用递归的方式实现
def fab(n):
    if n < 1:
        print('输入有误...')
        return -1
    elif n == 1 or n == 2:
        return 1
    else:
        return fab(n-1) + fab(n-2)
    

 

转载于:https://www.cnblogs.com/jeavenwong/p/6896576.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值