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 @   一点浩然气~  阅读(303)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示