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函数-递归函数的更多相关文章

  1. golang函数学习笔记

    golang函数特点: a.不支持重载,一个包不能有两个名字一样的函数 b.函数是一等公民,函数也是一种类型,一个函数可以赋值给变量 c.匿名函数 d.多返回值   例子1 func add(a, b ...

  2. GO开发[四]:golang函数

    函数 1.声明语法:func 函数名 (参数列表) [(返回值列表)] {} 2.golang函数特点: a. 不支持重载,一个包不能有两个名字一样的函数 b. 函数是一等公民,函数也是一种类型,一个 ...

  3. golang 函数作为类型

    golang 函数作为类型 package main import "fmt" type A func(int, int) func (f A)Serve() { fmt.Prin ...

  4. electron/nodejs实现调用golang函数

    https://www.jianshu.com/p/a3be0d206d4c 思路 golang 支持编译成c shared library, 也就是系统中常见的.so(windows下是dll)后缀 ...

  5. vim支持golang函数调整

    golang函数跳转需要借助godef实现 godef安装如下 go get -v github.com/rogpeppe/godef go install -v github.com/rogpepp ...

  6. Golang函数-不定参函数

    Golang函数-不定参函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  7. Golang函数-匿名函数与闭包函数

    Golang函数-匿名函数与闭包函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  8. Golang函数-函数的基本概念

    Golang函数-函数的基本概念 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.函数的概述 1>.函数定义语法格式 Go语言函数定义格式如下: func 函数名( 函数参 ...

  9. gohook 一个支持运行时替换 golang 函数的库实现

    运行时替换函数对 golang 这类静态语言来说并不是件容易的事情,语言层面的不支持导致只能从机器码层面做些奇怪 hack,往往艰难,但如能成功,那挣脱牢笼带来的成就感,想想就让人兴奋. gohook ...

随机推荐

  1. 基于通用二进制方式安装MySQL-5.7.24(比源码安装MySQL快许多)及破密码

    确保系统中有依赖的libaio软件 yum -y install libaio 使用wget命令下载mysql-5.7.24软件包 wget http://mirrors.sohu.com/mysql ...

  2. Oracle常用SQL时间函数

    1.查询当前日期和时间 select sysdate from dual; 2.查询本月最后一天 select last_day(sysdate) from dual; 3.查询前后多少月 ) fro ...

  3. javascript对象创建及继承

    //****************************************************************************** //创建类的多种方式 //------ ...

  4. Java日期时间API系列9-----Jdk8中java.time包中的新的日期时间API类的Period和Duration的区别

    1.Period final修饰,线程安全,ISO-8601日历系统中基于日期的时间量,例如2年3个月4天. 主要属性:年数,月数,天数. /** * The number of years. */ ...

  5. Git - 删除github上的提交历史

    参考 https://segmentfault.com/q/1010000002898735 https://stackoverflow.com/questions/1338728/delete-co ...

  6. MySQL - 设置UTF-8编码

    1. 在Windows上,安装时请选择UTF-8编码,以便正确地处理中文. 在Mac或Linux上,需要编辑MySQL的配置文件,把数据库默认的编码全部改为UTF-8.MySQL的配置文件默认存放在/ ...

  7. CSS - 权重,样式优先级

    关于CSS权重,一套计算公式来去计算,就是 CSS Specificity,我们称为CSS 特性或称非凡性,它是一个衡量CSS值优先级的一个标准. 遇到样式应用问题,计算一下权重就知道优先级. 具体规 ...

  8. UIView动画的使用

    下面介绍三种简单的UIView动画的使用,如果在项目中对动画没有太多“细致化”的设计要求,基本够用了. 一.首尾式动画 说明:如果只是修改控件的属性,使用首尾式动画还是很方便的,如果还需要在动画完成后 ...

  9. selenium webdriver 操作select

    @Test public void test() { WebDriver driver=ExplorerBase.IESetting(); driver.get("http://unique ...

  10. java记录5--线程

    ------------恢复内容开始------------ 1.什么叫程序:是一个严格有序的指令集合.程序规定了完成某一任务时,计算机所需做的各种操作,已经执行顺序. 特点:资源的独占性     执 ...