递归,就是在运行的过程中调用自己。

语法格式如下:

  1. func recursion() {
  2. recursion() /* 函数调用自身 */
  3. }
  4. func main() {
  5. recursion()
  6. }

Go 语言支持递归。但我们在使用递归时,开发者需要设置退出条件,否则递归将陷入无限循环中。

递归函数对于解决数学上的问题是非常有用的,就像计算阶乘,生成斐波那契数列等。

阶乘

以下实例通过 Go 语言的递归函数实例阶乘:

  1. package main
  2. import "fmt"
  3. func Factorial(x int) (result int) {
  4. if x == 0 {
  5. result = 1;
  6. } else {
  7. result = x * Factorial(x - 1);
  8. }
  9. return;
  10. }
  11. func main() {
  12. var i int = 15
  13. fmt.Printf("%d 的阶乘是 %d\n", i, Factorial(i))
  14. }

以上实例执行输出结果为:

  1. 15 的阶乘是 1307674368000

斐波那契数列

以下实例通过 Go 语言的递归函数实现斐波那契数列:

  1. package main
  2. import "fmt"
  3. func fibonaci(n int) int {
  4. if n < 2 {
  5. return n
  6. }
  7. return fibonaci(n-2) + fibonaci(n-1)
  8. }
  9. func main() {
  10. var i int
  11. for i = 0; i < 10; i++ {
  12. fmt.Printf("%d\t", fibonaci(i))
  13. }
  14. }

以上实例执行输出结果为:

  1. 0 1 1 2 3 5 8 13 21 34