LeetCode算法—递归
一:递归
1、定义:函数直接或者间接的调用自己
2、四个要素
(1)接受的参数
(2)返回的值
(3)终止条件
(4)如何拆解
二:LeetCode
509 斐波那契数列
def func(n):
if n<2:
return n
else:
return func(n-1)+func(n-2)
n=int(input())
print(func(n))
206 反转链表
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
# 基准条件:空链表或者只有一个节点的链表
if not head or not head.next:
return head
# 递归反转子链表
new_head = self.reverseList(head.next)
# 将当前节点连接到反转后的子链表末尾
head.next.next = head
head.next = None
# 返回新的头节点
return new_head
344 反转字符串
#方法1 切片法
#方法2 双指针
# class Solution:
# def func(self,s):
# left,right=0,len(s)-1
# while left<=right:
# s[left],s[right]=s[right],s[left]
# left+=1
# right-=1
# return s
#方法3 递归的方法
class Solution:
def reverseString(self, s: List[str], left: int = 0, right: int = None) -> None:
if right is None:
right = len(s) - 1
# 基本条件:当左指针不再小于右指针时,停止递归
if left >= right:
return
# 交换左右指针所指的元素
s[left], s[right] = s[right], s[left]
# 递归处理下一个子数组
self.reverseString(s, left + 1, right - 1)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?