草庐IT

递归图

全部标签

recursion - 嵌套循环的递归实现

我正在尝试从字符串生成增量组合,例如://for"23405"2345233440052343404052340340523405我用嵌套循环来做:str:="23405"fori:=0;i是否可以用递归函数做同样的事情?我正在用go编写它,但任何语言的示例都会有所帮助。这是Playgroundlink. 最佳答案 这是我的递归尝试:https://repl.it/ElYY/9packagemainimport"fmt"funcreverse(strstring,lengthint,iint){iflen(str)>length+i

go - 递归扩展结构定义?

如何扩展结构定义以显示嵌套类型?例如,我想扩展这个typeFoostruct{xinty[]stringzBar}typeBarstruct{aintbstring}像这样:typeFoostruct{xinty[]stringzBarstruct{aintbstring}}上下文:对现有代码进行逆向工程。 最佳答案 您可以尝试按照这些思路列出结构中定义的所有字段,递归地列出以这种方式找到的结构。它不会完全产生您要求的输出,但它非常接近并且可能可以进行调整以达到目的。packagemainimport("reflect""fmt")

recursion - Go中的递归函数,如果内层函数返回,外层函数是否继续正常执行?

好的,所以我有这段代码funcregisterDomain(domainNamestring,nint)bool{//buildingtherequesthereresp,errr:=client.Do(r)iferrr!=nil{ifn==1{returnfalse}registerDomain(domainName,n-1)}bodyBytes,err2:=ioutil.ReadAll(resp.Body)iferr2==nil{resp.Body.Close()//handlebodyBytes//iftheresponseishowitshouldbereturntrue,if

linux - 在 fsnotify 上递归地重新生成文件删除/重命名 (Golang)

目标:我正试图监控一个随时可能被移动或删除的文件。如果是,我想重新生成此文件,以便应用程序可以继续写入。尝试:我试图通过实现两个函数来做到这一点,monitorFile()来监听fsnotify事件并通过channel将删除的文件名发送到listen()通过非缓冲channelmvrm(移动或重命名)接收文件路径字符串后,将递归地重新生成文件。观察到的行为:我可以echo'foo'>>./inlogs/test.log并查看写通知,甚至可以rm./inlogs/test.log(或mv)并看到文件已重新生成...但仅生成一次。如果我第二次rm或mv文件,则不会重新生成文件。奇怪的是,在

go - 在 Go 中递归选择子项的有效方法?

我正在尝试找出从Golang中的父级递归选择所有相关子级的最佳方法(顺序无关紧要),但我听说编译器并未针对递归和尾递归函数进行优化,所以它们的成本很高。假设我在map中有以下记录结构:Legend:ID:ParentID1:0_____|_______/|\2:13:14:1____||_____________/||\\5:26:27:48:49:4|______|\10:811:8|______|\12:1013:10如何在Go中有效地选择与父(1)相关的所有子ID(2到13)?欢迎所有答案,包括Iterative、Recursive、Tail-Recursive,甚至Channe

golang 中的递归在使用 goroutines、channels 和 sync.Waitgroup 时会产生死锁或负 WaitGroup 计数器

我正在尝试使用递归函数查找所有目录的列表。该函数的代码是funcFindDirs(dirstring,nativePartitions[]int64,wg*sync.WaitGroup,dirlistchanchanstring){//deferwg.Doneherewillgivenegativewaitgrouppanic,commentingitwillgivenegativewaitgroupcounterpanicfd,err:=os.Open(dir)iferr!=nil{panic(err)}filenames,err:=fd.Readdir(0)iferr!=nil{p

go - 如何使用不同的数据结构递归循环 map

我正在尝试找出在Go中递归遍历[string]int映射的最佳方法。我正在构建一个涉及多个国家的游戏,并最终由两人一组组成。目标是将“得分”最低的前两个国家匹配到自己的一组中,并将其添加回集合中,从而为新map提供这些国家得分的总值。然后递归地对所有组执行此操作,最后得到一组和一个总值。例如,如果您有:score:=map[string]int{"Canada":7,"US":2,"Germany":3,"Korea":4,}group1={[US:2][Germany:3]}共有5group1现在将以“分数”5放回初始集合中,因为它获得了两个最低分数。我们现在有:score:=map

go - 使用 gob 打包递归定义的结构体

我主要使用Python,但也在玩Go。我写了下面的代码来做一些在python中非常简单的事情,我希望它也可以在Go中完成。packagemainimport("bytes""encoding/gob""fmt""io/ioutil")typeOrderstruct{TextstringUser*User}typeUserstruct{TextstringOrder*Order}funcmain(){o:=Order{}u:=User{}o.Text="ordertext"u.Text="usertext"//commentingthissectionpreventsstackoverf

go - 递归创建具有特定所有者和组的目录

我想递归地创建一个目录,并为创建的文件夹及其父级分配一个所有者和组。例如,假设/var存在,我想创建/var/test1/test2/test3。我可以使用os.MkdirAll("/var/test1/test2/test3",0600)来做到这一点。但是,我还想将test1、test2和test3的uid设置为user1和gid到user1。使用os.Chown可以做到这一点,但这需要大量的手动工作。在创建文件夹链之前,我需要构建文件夹及其父项的树,然后在创建后对每个文件夹使用os.Chown。有没有更简单的方法? 最佳答案 有

go - 在 go 中编码递归类型

这个问题在这里已经有了答案:json.Marshal(struct)returns"{}"(3个答案)关闭6年前。我想像这样在go中编码和取消编码递归类型:typeDogstruct{ageintsibling*Dog}有什么办法可以在golang中做到这一点吗?我尝试使用json.Marshal但它不起作用。