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层楼共有多少种走法?请用递归实现。