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 ...
 
随机推荐
- ajax发送GET和POST请求
			
1.ajax-get请求demo <script> document.getElementById("buttonname").onclik=function(){ / ...
 - python集合操作方法详解
			
前言 说集合之前,我们先说一个小例子,假设某公司有五个人喜欢打篮球,五个人喜欢打游戏,问即打游戏有打篮球的人都有哪些? play_basketball = ['a','b','c','d','e'] ...
 - 解Bug之路-记一次调用外网服务概率性失败问题的排查
			
前言 和外部联调一直是令人困扰的问题,尤其是一些基础环境配置导致的问题.笔者在一次偶然情况下解决了一个调用外网服务概率性失败的问题.在此将排查过程发出来,希望读者遇到此问题的时候,能够知道如何入手. ...
 - 1-9springboot之thymeleaf常用语法(html页面)
			
一.引用命名空间 <html xmlns:th="http://www.thymeleaf.org"> 在html中引入此命名空间,可避免编辑器出现html验证错误,虽 ...
 - 【剑指Offer面试编程题】题目1354:和为S的连续正数序列--九度OJ
			
题目描述: 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久, ...
 - 第1节 Scala基础语法:5、6、7、8、基础-申明变量和常用类型,表达式,循环,定义方法和函数
			
4. Scala基础 4.1. 声明变量 package cn.itcast.scala object VariableDemo { def main(args: Array[Strin ...
 - Java - 实现双向链表
			
熟悉一下Java... package ChianTable; import java.util.Scanner; /** * Created by Administrator on 2018/3/2 ...
 - mysql时出现:is not allowed to connect to this MySQL serverConnection closed by foreign host问题的解决
			
这个原因是因为索要链接的mysql数据库只允许其所在的服务器连接,需要在mysql服务器上设置一下允许的ip权限,如下: 1.连接mysql mysql -u root -p 1 如图: 2.授权 g ...
 - 卸载sql server 2008
			
一. SQL2008卸载. 1.从控制面板卸载 1)点击计算机右下角“开始”,点击“控制面板” 2)点击“卸载程序”. 3)在程序列表中找到“Microsoft SQL Server 2008” ...
 - Oracle10g下载地址
			
Oracle Database 10g Release 2 (10.2.0.1.0) Enterprise/Standard Edition for Microsoft Windows (32-bit ...