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层楼共有多少种走法?请用递归实现。
  • 相关阅读:
    Windows 8实例教程系列 开篇
    qt 开发发布于 windeploy.exe
    qt qoci 测试验证
    vmware vmx 版本不兼容
    qt oracle
    vc qt dll
    QOCIDriver unable to create environment
    qoci 编译完 放置位置 具体根据情况
    calling 'lastError' with incomplete return type 'QSqlError' qsqlquer
    Hbase 操作工具类
  • 原文地址:https://www.cnblogs.com/yinzhengjie2020/p/12323860.html
Copyright © 2011-2022 走看看