Das Studium der Go-Sprache Version 2 bedeutet, dass ich versucht habe, Algorithmen mit Go zu studieren.
Zunächst einmal, was ein Abschluss ist, werde ich den Satz beschreiben, auf den ich unten Bezug genommen habe.
Die anonyme Funktion von Go ist "näher". Verschlüsse werden auf Japanisch als "Funktionsabschluss" bezeichnet und sind mit einer Reihe von "Außenfunktionsumgebungen", die sich auf Funktionen und Funktionsverarbeitung beziehen, "beschränkt (geschlossen)".
Es handelt sich also um eine anonyme Funktion. Dieses Mal habe ich versucht, damit eine rekursive Funktion zu erstellen.
fact.go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
r := bufio.NewReader(os.Stdin)
w := bufio.NewWriter(os.Stdout)
defer w.Flush()
var a int
fmt.Fscan(r, &a)
result := solveFact(a)
fmt.Print(result)
}
func solveFact(x int) int {
var fact func(n int) int
fact = func(n int) int{
if n == 0{ return 1 }
return n * fact(n - 1)
}
return fact(x)
}
Ausführungsergebnis
❯ go run fact.go
4
24
fib.go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
r := bufio.NewReader(os.Stdin)
w := bufio.NewWriter(os.Stdout)
defer w.Flush()
var a int
fmt.Fscan(r, &a)
result := solveFib(a)
fmt.Print(result)
}
func solveFib(x int) int {
var fib func(n int) int
fib = func(n int) int{
if n <= 1{return n}
return fib(n -1) + fib(n - 2)
}
return fib(x)
}
Ausführungsergebnis
❯ go run fib.go
10
55
Fmt.Scan () / fmt.Printf () wird für die Eingabe und Ausgabe verwendet. Ich habe jedoch Angst vor der Menge an Ein- und Ausgängen, daher verwende ich Bufio und versuche, es zu puffern.
Recommended Posts