Recursion
#
// Go က <a href="https://en.wikipedia.org/wiki/Recursion_(computer_science)"><em>recursive functions</em></a> ကို support လုပ်ပါတယ်။
// Recursive function ကိုနမူနာပြနေကြ factorial နမူနာကိုတချက်ကြည့်လိုက်ကြရအောင်။
package main
import "fmt"
// ဒီ `fact` function က base case `fact(0)` ကို မရောက်မခြင်းသူ့ကိုယ်သူ ပြန်ခေါ်နေပါလိမ့်မယ်။
func fact(n int) int {
if n == 0 {
return 1
}
return n * fact(n-1)
}
func main() {
fmt.Println(fact(7))
// Closures လဲ recursive ဖြစ်လို့ရတယ်၊ ဒါပေမယ့် closure function ကို defined မလုပ်ခင်
// type ကို `var` ဆိုပီးသီးသန့်ကြေငြာပေးရမယ်။
var fib func(n int) int
fib = func(n int) int {
if n < 2 {
return n
}
// `fib` ကိုအထက်မှာကြေငြာပီးသားဖြစ်တဲ့အတွက် Go က `fib` ကိုခေါ်တဲ့အချိန်မှာ
// ဘယ် funtion ကိုခေါ်ရမလဲဆိုတာကိုသိတယ်။
return fib(n-1) + fib(n-2)
}
fmt.Println(fib(7))
}
$ go run recursion.go
5040
13