我用 go 编写的递归函数有什么问题?
短信预约 -IT技能 免费直播动态提醒
问题内容
我正在通过《the go 编程语言》一书学习 golang,在第 5 章第 5.3 节(多个返回值)练习 5.5 中,我必须实现函数 countwordandimages
,该函数从 (golang.org/x/ net) 包中,并计算 html 文件中的单词和图像数量,我实现了以下函数,但出于某种原因,我收到每个 words
和 images
返回变量的 0 值。
func countWordsAndImages(n *html.Node) (words, images int) {
if n.Type == html.TextNode {
words += wordCount(n.Data)
} else if n.Type == html.ElementNode && n.Data == "img" { // if tag is img on element node
images++
}
for c := n.FirstChild; c != nil; c = n.NextSibling {
tmp_words, tmp_images := countWordsAndImages(c)
words, images = words+tmp_words, images+tmp_images
}
return words, images
}
func wordCount(s string) int {
n := 0
scan := bufio.NewScanner(strings.NewReader(s))
scan.Split(bufio.ScanWords)
for scan.Scan() {
n++
}
return n
}
我试图避免在函数中命名返回变量元组 ((int, int)
)。
正确答案
使用 c.nextsibling
前进到下一个兄弟,而不是 n.nextsibling
:
for c := n.FirstChild; c != nil; c = c.NextSibling {
⋮
https://www.php.cn/link/e7364a5abd2a860cf8e33b114369b92b
以上就是我用 go 编写的递归函数有什么问题?的详细内容,更多请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
我用 go 编写的递归函数有什么问题?
下载Word文档到电脑,方便收藏和打印~
下载Word文档
猜你喜欢
我用 go 编写的递归函数有什么问题?
问题内容我正在通过《the go 编程语言》一书学习 golang,在第 5 章第 5.3 节(多个返回值)练习 5.5 中,我必须实现函数 countwordandimages,该函数从 (golang.org/x/ net) 包中,并
2024-02-06
2024-04-02