04-递归函数
@
1. 概念
当一个函数在其函数体内调用自身,则称之为递归。
注意:递归必须接近边界值,否则将无限循环下去
2. 示例(阶乘)
package main
import "fmt"
func Factorial(n uint64)(result uint64) {
if (n > 0) {
result = n * Factorial(n-1)
return result
}
return 1
}
func main() {
var i int = 15
fmt.Printf("%d 的阶乘是 %d\n", i, Factorial(uint64(i)))
}
说明:
如果返回值不定义为变量 result,则函数中的变量 result需要初始化,可写成:
func Factorial(n uint64) uint64 {
if (n > 0) {
result := n * Factorial(n-1)
return result
}
return 1
}
结果输出
[root@liubei go-test]# go run test.go
15 的阶乘是 130767368000
3. 示例(斐波那契序列)
说明:定义一个名为fibonacci的函数,当n小于2时返回本身,当n大于等于2时,返回前边两个数的和。(其中前边两个数的和调用了该函数本身)
- 代码
package main
import "fmt"
func fibonacci(n int) int {
if n < 2 {
return n
}
return fibonacci(n-2) + fibonacci(n-1)
}
func main() {
var i int
for i = 1; i <= 10; i++ {
fmt.Printf("%d\t", fibonacci(i))
}
fmt.Printf( "\n" )
}
- 结果
1 1 2 3 5 8 13 21 34 55