Go 语言递归函数
递归,就是在运行的过程中调用自己。
语法格式如下:
1 func recursion() { 2 recursion() /* 函数调用自身 */ 3 } 4 5 func main() { 6 recursion() 7 }
Go 语言支持递归。但我们在使用递归时,开发者需要设置退出条件,否则递归将陷入无限循环中。
递归函数对于解决数学上的问题是非常有用的,就像计算阶乘,生成斐波那契数列等。
----------------------------------------------------------------------------------------------
阶乘
以下实例通过 Go 语言的递归函数实例阶乘:
1 package main 2 3 import "fmt" 4 5 func Factorial(x int) (result int) { 6 if x == 0 { 7 result = 1; 8 } else { 9 result = x * Factorial(x - 1); 10 } 11 return; 12 } 13 14 func main() { 15 var i int = 15 16 fmt.Printf("%d 的阶乘是 %d ", i, Factorial(i)) 17 }
以上实例执行输出结果为:
15 的阶乘是 1307674368000
斐波那契数列
以下实例通过 Go 语言的递归函数实现斐波那契数列:
1 package main 2 3 import "fmt" 4 5 func fibonacci(n int) int { 6 if n < 2 { 7 return n 8 } 9 return fibonacci(n-2) + fibonacci(n-1) 10 } 11 12 func main() { 13 var i int 14 for i = 0; i < 10; i++ { 15 fmt.Printf("%d ", fibonacci(i)) 16 } 17 }
以上实例执行输出结果为:
0 1 1 2 3 5 8 13 21 34