一、递归(Recursion)
定义:函数直接或者间接调用自己
二、力扣509题
class Solution(object):
def fib(self, n):
"""
:type n: int
:rtype: int
"""
if n < 2:
return 0 if n == 0 else 1
sum = self.fib(n-1) + self.fib(n-2)
return sum
三、力扣206题
class Solution(object):
def reverseList(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
if head is None or head.next is None:
return head
p = self.reverseList(head.next)
head.next.next = head
head.next = None
return p
四、力扣344题
递归法:
class Solution(object):
def reverseString(self, s):
"""
:type s: List[str]
:rtype: None Do not return anything, modify s in-place instead.
"""
self.recursion(s,0,len(s)-1)
def recursion(self,s,left,right):
if left >= right:
return
self.recursion(s,left+1,right-1)
s[left],s[right] = s[right],s[left]
双指针法:
class Solution(object):
def reverseString(self, s):
"""
:type s: List[str]
:rtype: None Do not return anything, modify s in-place instead.
"""
left = 0
right = len(s) - 1
while(left <= right):
s[left],s[right] = s[right],s[left]
left += 1
right -= 1
return