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

语法格式如下:

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

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

阶乘

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

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

斐波那契数列

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

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

Go语言递归函数 - 图1