Python-18 函数:递归是神马

本文通过介绍递归的基本概念及其在Python中的应用,展示了递归解决复杂问题的独特魅力。文章提供了使用递归实现阶乘、斐波那契数列及汉诺塔问题的具体实例,并探讨了Python中递归调用的深度限制。

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

递归

如果说优秀的程序员是伯乐,那么把递归比喻成神马再形象不过了。

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

递归这个概念,是算法范畴,本不属于Python,但是如果掌握了递归方法,会发现是一个非常棒的编程思路!


用普通方法实现一个正整数的阶乘

def factorial(n):
    result = n
    for i in range(1,n):
        result*=i
    return result

number = int(input('请输入一个正整数:'))
result = factorial(number)
print('%d 的阶乘是:%d' % (number,result))
        
>>> ================================ RESTART ================================
>>> 
请输入一个正整数:10
10 的阶乘是:3628800
>>> 

使用递归实现阶乘

def factorial(n):
    if n == 1:
        return 1
    else :
        return n*factorial(n-1)


number = int(input('请输入一个正整数:'))
result = factorial(number)
print('%d 的阶乘是:%d' % (number,result))
>>> ================================ RESTART ================================
>>> 
请输入一个正整数:10
10 的阶乘是:3628800
>>> 


python递归调用的默认深度是100层

>>> def resout():
	resout()

	
>>> resout()
  File "<pyshell#4>", line 2, in resout
    resout()
  File "<pyshell#4>", line 2, in resout
    resout()
  File "<pyshell#4>", line 2, in resout
    resout()
RuntimeError: maximum recursion depth exceeded
>>> 
如果需要改变递归深度,如下,1000000为设置的递归深度

>>> import sys
>>> sys.setrecursionlimit(1000000)

用递归计算斐波那契数列

def fab(n):
    if n == 1 or n == 2:
        return 1
    if n > 2:
        return fab(n-1)+fab(n-2)

number = int(input('请输入菲波那切数列的顺序值:'))
result = fab(number)
print('第 %d 个斐波那契数值为:%d' % (number,result))


汉诺塔

def hanoi(n,x,y,z):
    if n == 1:
        print(x,'-->',z)
    else:
        hanoi(n-1,x,z,y) #将前n-1个盘子从x移到y上
        print(x,'-->',z) #将最底下的盘子从x移动到z上
        hanoi(n-1,y,x,z) #将y上的n-1个盘子移动到z上

n = int(input('请输入汉诺塔的层数:'))
hanoi(n,'X','Y','Z')
    












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值