我有一個單鏈表。如何使用具有指標接收器的遞回方法獲取鏈表的長度?
type Node struct {
data int
next *Node
}
我試過這樣,但總是回傳 1
func (n *Node) recursiveLength() (result int) {
if n != nil {
result = 1
n = n.next
}
return
}
uj5u.com熱心網友回復:
您的解決方案不是遞回的。它有編譯錯誤。但如果我們想修復它,它可能是這樣的:
package main
import "fmt"
type Node struct {
data int
next *Node
}
func (n *Node) recursiveLength() (result int) {
if n != nil {
result = 1
n = n.next
return result n.recursiveLength()
}
return 0
}
func main() {
x := Node{data: 0, next: &Node{data: 1, next: &Node{data: 2, next: nil}}}
fmt.Println(x.recursiveLength())
}
但這不是寫length方法的好主意,最好把它改成一個接受Node并回傳其長度的函式:
package main
import "fmt"
type Node struct {
data int
next *Node
}
func recursiveLength(n *Node) (result int) {
if n != nil {
n = n.next
return 1 recursiveLength(n)
}
return 0
}
func main() {
x := Node{data: 0, next: &Node{data: 1, next: &Node{data: 2, next: nil}}}
fmt.Println(recursiveLength(&x))
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/417940.html
標籤:
