函数的递归调用

* 本页面主要介绍Go语言函数的递归调用的相关内容。

递归,大家都不陌生,就是在运行的过程中调用自己。 一个函数调用自己,就叫做递归函数。综合来看,要构成递归,需要具备两个条件:

  • 子问题须与原始问题为同样的事,且更为简单
  • 不能无限制地调用本身,须有个出口,化简为非递归状况处理,否则可能会变成无限递归,会导致系统资源耗尽最终报错

递归函数对于解决数学上的问题是非常有用的,一起来看几个“递归”的常见例子吧!

数字阶乘

一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。1808年,基斯顿·卡曼引进这个表示法。

  package main

  import "fmt"

  func factorial(i int) int {
      if i <= 1 {
          return 1
      }
      return i * factorial(i-1)
  }

  func main() {
      var i int = 7
      //Factorial of 7 is 5040
      fmt.Printf("Factorial of %d is %d\n", i, factorial(i))
  }
斐波那契数列(Fibonacci)

这个数列从第3项开始,每一项都等于前两项之和。

  package main

  import "fmt"

  func fibonaci(i int) int {
      if i == 0 {
          return 0
      }
      if i == 1 {
          return 1
      }
      return fibonaci(i-1) + fibonaci(i-2)
  }

  func main() {
      var i int
      for i = 0; i < 10; i++ {
          fmt.Printf("%d\n", fibonaci(i))
      }
  }

  //结果
  0
  1
  1
  2
  3
  5
  8
  13
  21
  34

这部分内容就总结到这里,Get了不?


* 本页内容参考以下数据源:

  • 《Go程序设计语言》
  • https://www.cnblogs.com/heych/p/12579545.html

凯冰科技 · 代码改变世界,技术改变生活
Next Page→