递归思维
介绍
将大问题转化为小问题,通过递归依次解决各个小问题
示例
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组
char[]的形式给出。
//系统api
func reverseString(_ s: inout [Character]) {
s.reverse()
}
//递归
//https://leetcode-cn.com/problems/reverse-string/solution/swift-di-gui-by-hu-cheng-he-da-bai-sha-3/
//执行用时:240 ms, 在所有 Swift 提交中击败了98.99%的用户
//内存消耗:24.9 MB, 在所有 Swift 提交中击败了15.87%的用户
func reverseString_a(_ s: inout [Character]) {
func helper(_ s: inout [Character],_ left: Int,_ right: Int){
if left >= right {
return
}
(s[left],s[right]) = (s[right],s[left])
helper(&s, left + 1, right - 1)
}
helper(&s, 0, s.count-1)
}给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
给定一个整数 n,生成所有由 1 ... n 为节点所组成的二叉搜索树。
递归+备忘录
斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1. 给定 N,计算 F(N)。
练习
最后更新于
这有帮助吗?