初探Go语言:递归的示例学习

发表时间: 2024-06-05 23:18

官网示例代码:

import "fmt"func fact(n int) int {    if n == 0 {        return 1    }    return n * fact(n-1)}func main() {    fmt.Println(fact(7))    var fib func(n int) int    fib = func(n int) int {        if n < 2 {            return n        }        return fib(n-1) + fib(n-2)    }    fmt.Println(fib(7))}

这段代码展示了两个典型的递归函数的使用:一个用于计算阶乘,另一个用于计算斐波那契数列。

阶乘函数fact:

  • 使用递归来计算阶乘。
  • 基准条件是n == 0,返回1。
  • 否则,返回n * fact(n-1)。

斐波那契函数fib:

  • 使用递归来计算斐波那契数列。
  • 基准条件是n < 2,返回n。
  • 否则,返回fib(n-1) + fib(n-2)。
  • fib是用闭包方式定义的递归函数。

主函数main:

  • 计算并打印7的阶乘。
  • 计算并打印斐波那契数列的第7个数。

fact函数定义了阶乘函数。从7 * 6 * 5 * 4 * 3 * 2 * 1,结果是5040。

fib(7)的计算过程是:fib(6) + fib(5),继续分解直到基准条件,结果是13。