Go 递归函数


递归函数

Go 接受递归函数。如果函数调用自身并达到停止条件,则该函数是递归的。

在下面的示例中,testcount()是一个调用自身的函数。我们使用x变量作为数据,以 1 递增(x + 1)每次我们递归。当递归结束时x变量等于 11 (x == 11)。

示例

package main
import ("fmt")

func testcount(x int) int {
  if x == 11 {
    return 0
  }
  fmt.Println(x)
  return testcount(x + 1)
}

func main(){
  testcount(1)
}

结果:

1
2
3
4
5
6
7
8
9
10
亲自试一试 »

递归是常见的数学和编程概念。这样做的好处是您可以循环数据以获得结果。

开发人员应该小心使用递归函数,因为很容易编写一个永远不会终止的函数,或者使用过量内存或处理器能力的函数。然而,如果正确编写,递归可以是一种非常高效且数学上优雅的编程方法。

在下面的示例中,factorial_recursion()是一个调用自身的函数。我们使用x变量作为数据,每次递归时都会递减 (-1)。当条件不大于0时(即为0时)递归结束。

示例

package main
import ("fmt")

func factorial_recursion(x float64) (y float64) {
  if x > 0 {
     y = x * factorial_recursion(x-1)
  } else {
     y = 1
  }
  return
}

func main() {
  fmt.Println(factorial_recursion(4))
}

结果:

24
亲自试一试 »

对于新开发人员来说,可能需要一些时间才能弄清楚它到底是如何工作的,最好的方法是通过测试和修改它。