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 ...
随机推荐
- 字符流---Day32
时隔多久,我又回来写博客了,最近忙于两个课设,五周,搞得头发都不知道掉了多少根了,还没成为程序员就开始掉了,等我成为一名程序员的时候岂不是要秃头了,IT界的人会不会帮我当成大佬了,哈哈哈哈,希望我以后 ...
- JavaScript高级特征之面向对象笔记
Javascript面向对象 函数 * Arguments对象: * Arguments对象是数组对象 * Arguments对象的length属性可以获取参数的个数 * 利用Arguments对象模 ...
- python字典中值为列表或字典的构造方式
1.值为列表的构造方法 dic = {} dic.setdefault(key,[]).append(value) >>dic.setdefault('a',[]).append(1) & ...
- 第1节 Scala基础语法:14、15、list集合练习
package cn.itcast.collect /** *作业题 */object ListTest { def main(args: Array[String]): Unit = { //创建一 ...
- WebView 设置请求头 Header
package com.webview.demo; 2 3 import android.os.Bundle; 4 import android.support.v7.app.AppCompatAct ...
- ubunut18.04 下安装 gitlab ce版,使用清华源
gitlab官方的ubuntu安装说明 https://about.gitlab.com/install/#ubuntu 该安装说明介绍的是gitlab-ee版本 按照该说明也能安装gitlab-ce ...
- OOP的四大特征
抽象 abstract 最近对抽象有些不熟悉,那么先谈谈抽象. 抽象在java中常常表现为抽象类和抽象方法,即被abstract关键字修饰的类和方法. 抽象类:被abstract修饰的类 1 和接口不 ...
- MyBatis模糊查询异常: '%${}''读取jdbc属性
'%${}''总是传root, 后来发现${username}读取了jdbc里面的属性username,于是将jdbc属性名修改,成功
- 小陈WEB漏洞扫描器 V2.0
小陈WEB漏洞扫描器 V2.0 小陈WEB漏洞扫描器 V2.0 https://pan.baidu.com/s/1NSmFCyxowEa3YlOuhvtwwQ
- 【转】iPhone/IOS使用Fiddler抓包配置
原文链接:https://blog.csdn.net/weixin_39198406/article/details/81123716 1. 安装 安装Fiddler软件2. 配置2.1 端口 点击 ...