python 递归(十分厉害的操作我认为)

本文通过四个经典案例:阶乘实现、求幂运算、二叉树反转及斐波那契数列,深入浅出地讲解了递归算法的设计思想与应用技巧。特别强调了递归终止条件的重要性。

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

递归操作其实用处还挺广泛的,个人认为在秋招中也属于面试官常考问题之一。列举几个经典的例子来帮助自己理解一下递归这个牛13的操作。最近才搞懂一点点。

example-1:  实现的阶乘。

这个题如果不知道的递归的我来写,肯定是要写for循环。但是用递归的话其实就很简单了。(递归中要重点考虑终止条件)

def jiecheng(n):
    if n==1:
        return 1
    return n*jiecheng(n-1)

example-2:求整数n的幂

class Solution:
    def myPow(self, x: float, n: int) -> float:
        if n < 0:
            x = 1/x
            n = -n
            
        if n == 0:
            return 1
        if n == 1:
            return x
        
        if n % 2 == 0:
            return self.myPow(x, n/2)**2
        else:
            return self.myPow(x, n-1) * x

example-3:二叉树反转

class Solution:
    def invertTree(self, root: TreeNode) -> TreeNode:
        if not root:
            return root
        node = root
        #print(node)
        if node:
            node.left, node.right = node.right, node.left
        self.invertTree(node.left)
        self.invertTree(node.right)
        return root

example-4:斐波那契数列(爬楼梯)

斐波那契数列是指当前位数位前两位数之和,例如[1,2,3,5,8,13...],求第n位斐波那契数。

#digui#
def feibonaqi(n):
    if n == 1 or n ==2:
       return 1
    else:
       return feibonaqi(n-1)+feibonaqi(n-2)

#feidigui_1#
def geibonaqi(n):
    res=[0,1]
    while len(res)<n+1:
        res.append(res[-1]+res[-2])
    return res[n]

#feidigui_2#
def feibonaqi(n):
    a=0
    b=1
    res=[]
    while b<10000:
       res.append(b)
       a,b = b,a+b
    return res    
    

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值