zoukankan      html  css  js  c++  java
  • Golang函数-嵌套函数应用案例递归函数

             Golang函数-嵌套函数应用案例递归函数

                                 作者:尹正杰

    版权声明:原创作品,谢绝转载!否则将追究法律责任。

     

     

     

    一.嵌套函数的定义

    package main
    
    import (
        "fmt"
    )
    
    func add1(x int, y int) int {
        fmt.Println("in add1...")
        return x + y
    }
    
    /*
        什么是嵌套函数:
            其实就是在一个函数中调用另外的函数
    */
    func add2(x int, y int) int {
        fmt.Println("in add2...")
        return add1(x, y)
    }
    
    func main() {
    
        res := add2(100, 20)
    
        fmt.Println(res)
    }

    二.嵌套函数的应用场景-递归函数

    1>.阶乘案例

    package main
    
    import (
        "fmt"
    )
    
    /*
        什么是递归函数:
            如果一个函数在内部不调用其它的函数,而是调用自己本身,这个函数就是递归函数。
    
        递归函数的应用场景:
            电商网站中的商品类别菜单的应用
            查找某个目录下的文件
    
        定义递归函数注意事项:
            (1)函数嵌套调用函数本身
            (2)使用return指定函数出口
    */
    var total = 1
    
    func factorial(num int) {
        /*
            递归函数需要定义递归函数的结束条件,否则会出现"死递归"的现象,出现"死递归"情况程序就自动会抛出"fatal error: stack overflow"异常。
        */
        if num == 0 {
            return
        }
        total *= num
    
        /*
            函数内部自己调用自己,那么这个函数就是递归函数。
        */
        factorial(num - 1)
    }
    
    func main() {
    
        factorial(5)
    
        fmt.Printf("5的阶乘是[%d]
    ", total)
    }

    2>.上100层楼梯案例

      场景描述:
        一层楼有100个梯子,一个人上楼时他可以随机跨越1~3个台阶,那没问题来了,这个人从第1个台节到第100个台阶总共有多少种走法?请用递归方式实现。

      烧脑版:
        还是基于上面的场景,假设这栋楼有100层每层有100个梯子,这个人依旧是只能随机跨越1~3个台阶,那没问题来了,这个人从第一层上到第100层楼共有多少种走法?请用递归实现。
  • 相关阅读:
    陈应松《母亲》
    黄灯:一个农村儿媳眼中的乡村图景
    喝完茶为什么嘴里是甜的
    俗语一千条
    XtraBackup完整备份与增量备份的原理
    李嘉诚:90%考虑失败 关注细节
    redo和undo的区别
    tar命令
    自增锁引发的悲剧
    各版本 MySQL 并行复制的实现及优缺点
  • 原文地址:https://www.cnblogs.com/yinzhengjie2020/p/12323860.html
Copyright © 2011-2022 走看看