Golang | 递归函数

递归

递归,说白了就是直接或者间接的调用自己的一种算法。它是把求解问题转化为规模较小的子问题,然后通过多次递归一直到可以得出结果的最小解,然后通过最小解逐层向上返回调用,最终得到整个问题的解。总之递归可以概括为一句话就是:“能进则进,不进则退”。

递归的三要素

  • 确定递归函数的参数据和返回值
  • 确定终止条件
  • 确定单层递归的逻辑

简单的小例子

求一个数字的阶乘:

    import "fmt"

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

    func main() {
        var i int = 10
        fmt.Printf("Factorial of %d is %d\n", i, factorial(i))
        // Factorial of 10 is 3628800
    }

终止条件:

    if i <= 1 {
        return 1
    }

确定递归函数的参数据和返回值:

    func factorial(i int) int

确定单层递归的逻辑:

    return i * factorial(i-1)

斐波那契数列(Fibonacci)

    import "fmt"

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

    func main() {
        for i := 0;i < 10;i++{
            fmt.Printf("第 %v 次,值为:%v \n",i,fibonacci(i))
        }
        //第 0 次,值为:0 
        //第 1 次,值为:1 
        //第 2 次,值为:1 
        //第 3 次,值为:2 
        //第 4 次,值为:3 
        //第 5 次,值为:5 
        //第 6 次,值为:8 
        //第 7 次,值为:13 
        //第 8 次,值为:21 
        //第 9 次,值为:34 
    }


关注公众号,随时获取最新资讯

细节决定成败!
个人愚见,如有不对,恳请斧正!

posted @ 2022-01-24 10:34  一点浩然气~  阅读(294)  评论(0编辑  收藏  举报