当前位置:网站首页>【Yugong Series】July 2022 Go Teaching Course 025-Recursive Function
【Yugong Series】July 2022 Go Teaching Course 025-Recursive Function
2022-07-31 19:27:00 【Huawei cloud】
一、递归函数
如果一个函数在内部调用自身本身,这个函数就是递归函数.
递归函数的优点是定义简单,逻辑清晰.理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰.
构成递归的条件:
- 子问题须与原始问题为同样的事,且更为简单
- 不能无限制地调用本身,须有个出口,化简为非递归状况处理
1.Basic use of recursive functions
package mainimport "fmt"func main() { c:=Test(3) fmt.Println(c)}func Test(n int) int { // 只有第一排的人才知道自己的排数 if n == 1{ return 1 } // 如果不是第一排,问一下前一排的人 r := Test(n-1) fmt.Println("前一排的排数:",r) // 把前一排人的排数+1,计算出自己的排数. return r+1}
3.相关案例
一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1.自然数n的阶乘写作n!.1808年,基斯顿·卡曼引进这个表示法.
亦即n!=1×2×3×…×(n-1)×n.阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n.
package mainvar s int = 1func main() { TestDemo(5) print(s)}func TestDemo(n int) { if n == 1 { return } s *= n TestDemo(n - 1)}
总结
Recursion is when a function can call itself within it,Then this function is a recursive function, that is, a function that calls itself
- 优点:结构清晰,可读性强,可以极大的减少代码量,用有限的语句来定义对象的无限集合.
- 缺点:效率低,调用栈可能会溢出:Every time a function is called, space is allocated on the memory stack,The capacity of each process is limited,当调用的层次太多时,就会超出栈的容量,从而导致溢出.
边栏推荐
猜你喜欢

九齐ny3p系列语音芯片替代国产方案KT148A性价比更高420秒长度

Short-circuit characteristics and protection of SiC MOSFETs

Unity 之 音频类型和编码格式介绍

学生管理系统第一天:完成登录退出操作逻辑 PyQt5 + MySQL5.8

杰理语音芯片ic玩具芯片ic的介绍_AD14NAD15N全系列开发

角色妆容的实现

Getting Started with Tkinter

1161. Maximum Sum of Elements in Layer: Hierarchical Traversal Application Problems

PCB stackup design

【码蹄集新手村600题】不通过字符数组来合并俩个数字
随机推荐
【AcWing】第 62 场周赛 【2022.07.30】
c语言解析json字符串(json对象转化为字符串)
新型电信“套路”,我爸中招了!
21.支持向量机—核函数的介绍
使用 Flutter 和 Firebase 制作!计数器应用程序
高通cDSP简单编程例子(实现查询高通cDSP使用率、签名),RK3588 npu使用率查询
MySQL---aggregate function
MySQL---sort and pagination
leetcode:6135. 图中的最长环【内向基环树 + 最长环板子 + 时间戳】
学生管理系统第一天:完成登录退出操作逻辑 PyQt5 + MySQL5.8
MySQL---创建和管理数据库和数据表
[PIMF] OpenHarmony Thesis Club - Inventory of the open source Hongmeng tripartite library [3]
Thymeleaf是什么?该如何使用。
uni-app中的renderjs使用
Routing interception of WeChat applet
中文编码的设置与action方法的返回值
How to change npm to Taobao mirror [easy to understand]
Returns a zero-length array or empty collection, do not return null
这位985教授火了!当了10年博导,竟无一博士毕业!
Getting Started with Tkinter