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]\n", total)
}

2>.上100层楼梯案例

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

  烧脑版:
    还是基于上面的场景,假设这栋楼有100层每层有100个梯子,这个人依旧是只能随机跨越1~3个台阶,那没问题来了,这个人从第一层上到第100层楼共有多少种走法?请用递归实现。

 

posted @ 2020-02-17 21:46  JasonYin2020  阅读(2147)  评论(0编辑  收藏  举报