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层楼共有多少种走法?请用递归实现。
Golang函数-递归函数的更多相关文章
- golang函数学习笔记
golang函数特点: a.不支持重载,一个包不能有两个名字一样的函数 b.函数是一等公民,函数也是一种类型,一个函数可以赋值给变量 c.匿名函数 d.多返回值 例子1 func add(a, b ...
- GO开发[四]:golang函数
函数 1.声明语法:func 函数名 (参数列表) [(返回值列表)] {} 2.golang函数特点: a. 不支持重载,一个包不能有两个名字一样的函数 b. 函数是一等公民,函数也是一种类型,一个 ...
- golang 函数作为类型
golang 函数作为类型 package main import "fmt" type A func(int, int) func (f A)Serve() { fmt.Prin ...
- electron/nodejs实现调用golang函数
https://www.jianshu.com/p/a3be0d206d4c 思路 golang 支持编译成c shared library, 也就是系统中常见的.so(windows下是dll)后缀 ...
- vim支持golang函数调整
golang函数跳转需要借助godef实现 godef安装如下 go get -v github.com/rogpeppe/godef go install -v github.com/rogpepp ...
- Golang函数-不定参函数
Golang函数-不定参函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- Golang函数-匿名函数与闭包函数
Golang函数-匿名函数与闭包函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- Golang函数-函数的基本概念
Golang函数-函数的基本概念 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.函数的概述 1>.函数定义语法格式 Go语言函数定义格式如下: func 函数名( 函数参 ...
- gohook 一个支持运行时替换 golang 函数的库实现
运行时替换函数对 golang 这类静态语言来说并不是件容易的事情,语言层面的不支持导致只能从机器码层面做些奇怪 hack,往往艰难,但如能成功,那挣脱牢笼带来的成就感,想想就让人兴奋. gohook ...
随机推荐
- Linux kali安装或更新之后出现乱码
打开终端,输入以下命令,之后重启. apt-get install ttf-wqy-zenhei
- Centos610安装Oracle
官方安装参考 第一部分 依赖包 依赖包安全前先桌面安装 安装依赖包 yum -y install gcc gcc-c++ make binutils compat-libstdc++-33 elfut ...
- Vagrant 安装使用
先安装虚拟机 https://www.virtualbox.org/ 再安装 https://www.vagrantup.com/ 1.nginxhttp://nginx.org/download/ ...
- gitlab的搭建与使用(一)
yum install curl policycoreutils openssh-server openssh-clients postfix -y systemctl enable sshd sys ...
- 【转】Chrome开发者工具详解
https://www.jianshu.com/p/7c8552f08e7a Chrome开发者工具详解(1)-Elements.Console.Sources面 Chrome开发者工具详解(2)-N ...
- 外部IC寄存器的位定义
宏定义法:直接就是常量操作 方法1:用#define来定义,方便省事,缺点:系统不做检查 方法2:用enum来定义,可以像#define一样定义常量,同时系统做检查.既可以定义某个位也可以定义几个位的 ...
- SpringBoot之数据访问和事务-专题三
SpringBoot之数据访问和事务-专题三 四.数据访问 4.1.springboot整合使用JdbcTemplate 4.1.1 pom文件引入 <parent> <groupI ...
- [经验] Java 使用 netty 框架, 向 Unity 客户端的 C# 实现通信 [1]
这是一个较为立体的思路吧 首先是技术选型: 前端 : HTML5 + jQuery ,简单暴力, 不解释 服务端 : Spring Boot + Netty + Redis/Cache 客户端 ...
- Py西游攻关之基础数据类型(三)-元组
Py西游攻关之基础数据类型 - Yuan先生 https://www.cnblogs.com/yuanchenqi/articles/5782764.html 六 tuple(元组) 元组被称为只读列 ...
- golang自定义error
系统自身的error处理一般是 errors.New()或fmt.Errorf()等,对一些需要复杂显示的,不太友好,我们可以扩展下error. error在标准库中被定义为一个接口类型,该接口只有一 ...