网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
import “fmt”
func mergeSort(arr []int) []int {
// 基本情况
if len(arr) <= 1 {
return arr
}
// 找到数组的中点并分割数组
mid := len(arr) / 2
left := arr[:mid]
right := arr[mid:]
// 递归排序左右两部分
left = mergeSort(left)
right = mergeSort(right)
// 合并两个有序数组
return merge(left, right)
}
func merge(left, right []int) []int {
result := []int{}
i, j := 0, 0
// 合并过程
for i < len(left) && j < len(right) {
if left[i] <= right[j] {
result = append(result, left[i])
i++
} else {
result = append(result, right[j])
j++
}
}
// 将剩余的元素添加到结果中
result = append(result, left[i:]...)
result = append(result, right[j:]...)
return result
}
func main() {
arr := []int{38, 27, 43, 3, 9, 82, 10}
sortedArr := mergeSort(arr)
fmt.Println(sortedArr) // 输出: [3 9 10 27 38 43 82]
}
### 5. 递归函数设计的总结
设计递归函数时,清晰的思路和明确的目标是至关重要的。通过明确递归函数的目的,确定基本情况,设计递归情况,并合理组织代码,我们可以有效地实现递归算法来解决复杂问题。在Go语言中,递归为我们提供了强大而灵活的工具,通过熟练掌握递归函数的设计,我们将能够更好地发挥Go语言的力量,解决各种编程挑战。
![img](https://img-blog.csdnimg.cn/img_convert/00d00fdbaf499f6debba67659ea5dd97.png)
![img](https://img-blog.csdnimg.cn/img_convert/fc3dc5f5800c03f1ec8853e3a26aae5a.png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618658159)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**