golang2021函数与包(27)递归函数
通过前面的学习知道一个函数可以调用其他函数 。
如果一个函数在内部不调用其它的函数 , 而是自己本身的话 , 这个函数就是递归函数 。
例如:

注意:递归函数的执行流程
递归函数的作用:
举个例子 , 我们来计算阶乘n!=1*2*3*...*n
其它应用场景:
电商网站中的商品类别菜单的应用 。
查找某个磁盘下的文件 。
函数的递归调用
基本介绍
一个函数在函数体内又调用了本身 , 我们称为递归调用
递归调用快速入门
?代码1
上面代码的分析图:
?代码2
对上面代码分析的示意图:
递归调用的总结
函数递归需要遵守的重要原则:
1)执行一个函数时 , 就创建一个新的受保护的独立空间(新函数栈)
2)函数的局部变量是独立的 , 不会相互影响
3)递归必须向退出递归的条件逼近 , 否则就是无限递归 , 死龟了:)
4)当一个函数执行完毕 , 或者遇到return , 就会返回 , 遵守谁调用 , 就将结果返回给谁 , 同时当
函数执行完毕或者返回时 , 该函数本身也会被系统销毁
递归课堂练习题
?题1:斐波那契数请使用递归的方式 , 求出斐波那契数1,1,2,3,5,8,13...给你一个整数n , 求出它的斐波那契数是多少?思路:
1)当n==1||n==2,返回1
2)当n>=2,返回前面两个数的和f(n-1)+f(n-2)
代码:
?题2:求函数值
已知f(1)=3;f(n)=2*f(n-1)+1;请使用递归的思想编程 , 求出f(n)的值?思路:
直接使用给出的表达式即可完成代码:
?练习题3
题3:猴子吃桃子问题有一堆桃子 , 猴子第一天吃了其中的一半 , 并再多吃了一个!以后每天猴子都吃其中的一半 , 然后
再多吃一个 。 当到第十天时 , 想再吃时(还没吃) , 发现只有1个桃子了 。 问题:最初共多少个桃子?思路分析:
1)第10天只有一个桃子
2)第9天有几个桃子=(第10天桃子数量+1)*2
3)规律:第n天的桃子数据peach(n)=(peach(n+1)+1)*2
【golang2021函数与包(27)递归函数】代码:

- 小米|小米12S系列官宣7月4日正式发布:小米与徕卡联合研发
- 新书推荐 │ 大数据算法设计与分析
- 最前线 | 腾讯游戏发布40余款产品与项目,《王者荣耀》发布全新规划
- 为了证明人类可与黑猩猩结合,女科学家亲身试验,结果怎么样?
- 腾讯游戏发布40余款产品与项目,《王者荣耀》发布全新规划
- 宇宙大爆炸与理解生命起源和进化有什么关联?
- 湖北|巅峰摩擦?i9 12950HX与R9 6900HX专业应用差距有多大?
- FL Studio水果Cubase与Studio one三款编曲混音软件对比
- 与华为联手造车|华为联手造车威力巨大!小康股份涨停:股价创史上新高
- AI与K12的碰撞:科大讯飞推出适龄专属AI翻译笔
