Go 语言

2025年04月19日更新 4 人订阅
原价: ¥ 2 限时优惠
专栏简介 数据结构 in Golang:Hash Tables(哈希表) 算法 in Golang:Quicksort(快速排序) 算法 in Golang:Recursion(递归) 用Go语言构建分布式系统:服务注册、发现与日志管理实践 算法 in Golang:Selection sort(选择排序) Go语言之基本数据类型 深入探索Go语言:从初识到实践 实战:Go语言项目之使用JWT实现用户认证 算法 in Go:Binary Search(二分查找) 算法 in Golang:Breadth-first search(BFS、广度优先搜索) 算法 in Golang:D & C(分而治之) Go语言(Golang)编写最简单的命令行工具 深入探讨 Go 语言中的自定义 Zap 日志 Go语言详解:实现MySQL数据库的增删改查操作 深入解析Go语言Gin框架:路由注册与中间件源码剖析 Go 语言之在 Gin 框架中使用 Zap 实现高效日志管理 Go 语言中 zap 日志库的高效使用指南 Go 语言日志系统自定义:精细化日志管理与应用示例 Go 语言之搭建通用 Web 项目开发脚手架 Go语言结构体(struct)详解:定义、使用与JSON编码 探索 Go 语言的无类设计:从 Struct 到组合的优雅之道 地鼠工厂的秘密:解锁Go语言中goroutine的并发魔法 Go 并发编程实战:从互斥锁到 Goroutine 的优雅之道 用 Go 语言打造高效 TCP 扫描器:从入门到并发优化 gogen:一键生成 Go 项目,开发者的效率利器 深入剖析 Go 接口底层实现:从 eface 到 iface(基于 Go 1.24 源码) Go并发实战:5协程随机数求和 Go 开发必备:解锁 Viper 配置管理的正确姿势

算法 in Golang:D & C(分而治之)

算法inGolang:D&C(分而治之)D&C算法(策略)Divide&Conquer属于递归算法的一种其实它更像是一种思路、策略递归递归Recursion基线条件BaseCase递归条件RecursiveCaseD&C的步骤找到

算法 in Golang:D & C(分而治之)

D & C 算法(策略)

  • Divide & Conquer
  • 属于递归算法的一种
  • 其实它更像是一种思路、策略

递归

  • 递归 Recursion
    • 基线条件 Base Case
    • 递归条件 Recursive Case

D & C 的步骤

  1. 找到一个简单的基线条件(Base Case)
  2. 把问题分开处理,直到它变为基线条件

例子

  • 需求:将数组 [1, 3, 5, 7, 9] 求和
  • 思路1:使用循环(例如 for 循环)
  • 思路2:D & C (分而治之)

例子:D & C 策略

  • 基线条件:空数组 [],其和为0
  • 递归:[1, 3, 5, 7, 9]
    • 1 + SUM([3, 5, 7, 9])
    • 3 + SUM([5, 7, 9])
      • 5 + SUM([7, 9])
      • 7 + SUM([9])
        • 9 + SUM([])

创建项目并用vscode 打开

~/Code/go via 🐹 v1.20.3 via 🅒 base
➜ mcd divide_conquer

Code/go/divide_conquer via 🐹 v1.20.3 via 🅒 base
➜ go mod init divide_conquer
go: creating new go.mod: module divide_conquer

Code/go/divide_conquer via 🐹 v1.20.3 via 🅒 base
➜ c

Code/go/divide_conquer via 🐹 v1.20.3 via 🅒 base
➜

main.go 代码

package main

import "fmt"

func main() {
 total := sum([]int{1, 3, 5, 7, 9})
 fmt.Println("total: ", total)
}

func sum(arr []int) int {
 if len(arr) == 0 {
  return 0
 }
 return arr[0] + sum(arr[1:])
}

运行

Code/go/divide_conquer via 🐹 v1.20.3 via 🅒 base 
➜ go run .                  
total:  25

Code/go/divide_conquer via 🐹 v1.20.3 via 🅒 base 
➜ 
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论