go by example part 2

This commit is contained in:
2022-01-01 19:47:24 +01:00
parent afe165089d
commit c1b7c64da2
10 changed files with 335 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
package main
import "fmt"
// fact function calls itself until it reaches the base case of fact(0)
func fact(n int) int {
if n == 0 {
return 1
}
return n * fact(n-1)
}
func main() {
fmt.Println(fact(7))
// Closures can also be recursive, but this requires the closure to be declared with a typed var explicitly before its defined
var fib func(n int) int
// Go knows which function to call with fib as it is defined previously in main
fib = func(n int) int {
if n < 2 {
return n
}
return fib(n-1) + fib(n-2)
}
fmt.Println(fib(7))
}