開端
剛剛看到線性遞歸嘉裤、線性迭代和樹形遞歸這幾個概念郑临,一時興起栖博,便模仿起來屑宠,也算是入門練手吧,恰巧最近在看Golang這門很簡陋(是的仇让,貶義典奉,哈哈~~)的語言。
- 線性遞歸
//線性遞歸方法求階乘
package main
import "fmt"
func main() {
fmt.Println(factorial(6))
}
func factorial(i int) (n int) {
if i == 1 {
return 1
} else {
return i * factorial(i-1)
}
}
- 樹形遞歸
//樹形遞歸方法求某個斐波那契數(shù)
package main
import "fmt"
func main() {
fmt.Println(fib(8))
}
func fib(i int) int {
switch i {
case 0:
return 0
case 1:
return 1
default:
return fib(i-1) + fib(i-2)
}
}
- 線性迭代
//線性迭代方法求某個斐波那契數(shù)
package main
import "fmt"
func main() {
fmt.Println(fib(8))
}
func fib(i int) (n int) {
return fibIter(1, 0, i)
}
func fibIter(x, y, z int) (n int) {
if z == 0 {
return y
} else {
return fibIter(x+y, x, z-1)
}
}