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\n", i, Factorial(i))
  17. }

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

  1. 15 的阶乘是 1307674368000

斐波那契数列

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

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

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

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