过早客
  • 首页
  • 节点
  • 成员
  • 广告投放
  • 登录
  • 注册

你们是怎么理解递归的?

IT技术 • swift • 发表于 6 年前 • 最后回复来自 cuzfinal • 6 年前

树形结构?数学归纳法?
算法也能写出来,也能数学归纳法证明。但总是感觉没有彻底明白

加入收藏 新浪微博 分享到微信 ❤赞 2327 次点击 0 人赞 0 人收藏

打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

共收到9条回复
plax 6 年前 #1 赞 0

递归就是自己调用自己。关键在于每递归一次,待解决问题规模能够有所减小。就是一种有穷的数学归纳法。

fusheng 6 年前 #2 赞 1

不懂递归应该是没搞明白数据和代码是两个部分,看一下汇编就明白了。汇编中不包含参数,都是各寄存器传进来的。一旦理解了 一个函数调用包括静态的代码 + 动态的栈这两部分,递归就很容易理解了。

StephenCurry30 6 年前 #3 赞 1

递归就是自己干自己,直到把自己干不动了出来了

ihuster 6 年前 #4 赞 0

函数的每一次被调用,都使用的不同的栈,而栈里面装的变量的值是不同的 -- 虽然它们有一样的名字。我觉得在现实生活中,植物的分形应该是一种递归的表现。

stephendanteng 6 年前 #5 赞 0

递归的本质就是把事情交给别人去干,自己直接汇报,直到最底层的那个人,没法交给别人了,只能自己干,然后干完向上汇报。
相当于总监说,这事我干了,结果在项目经理那,项目经理说这事我干了,结果在组长那,组长说这事我干了,在开发人员那,开发人员说,这事我刚干完。对程序来说,这些角色都是一个入口而已。递归层数太多是不安全的,会造成栈溢出。

dckingdom 6 年前 #6 赞 0

递归本质上是循环,函数本身循环调用自己。循环必须要有结束条件,不然就成死循环。在适当的条件下退出函数本身就退出了递归调用。如果递归层次比较深,会耗费许多内存空间,因为每一层调用会以栈这种数据结构存储本层次局部变量,在商业代码中是不允许出现递归这种算法实现的,它会影响程序性能,需要寻求非递归算法实现同样的功能。递归函数通用结构如下:
f(a, b, ...){
if(condition)
return ret;
f(a, b, ...);
}

Moke_nn 6 年前 #7 赞 0

从前有座山,山里有个庙,庙里有个老和尚,给小和尚讲故事。
讲的什么呢?
从前有座山,山里有个庙,庙里有个老和尚,给小和尚讲故事。
....

如果一直讲下去就成了程序中所说的死循环。
什么时候是个头?只有故事中的故事" 老和尚说,故事讲完了,该洗洗睡,那么递归也就结束。

xiaohao750 6 年前 #8 赞 0

用递归能解决的问题:

1、数据的定义是按递归定义的。如Fibonacci函数。

2、问题解法按递归算法实现。如Hanoi问题。

3、数据的结构形式是按递归定义的。如二叉树、广义表等。

cuzfinal 6 年前 #9 赞 0

自我驱动。

请绑定手机号后,再发言,点击此处
Guozaoke.com—源自武汉的高端交流分享社区
相关主题
请问大家都是通过哪些好用的链接访问GPT
EDA断供
有多少人知道华为在AI算力的基础建设上已经超越英伟达了?
最近时间少了, 隔了这么久, 才做了一个网站
求推荐一个AI智能体客服
Android手机推荐
请教机器学习人工智能的一个技术问题
搞了个AI 生图的网站,不需要登录,永久免费
[第二波送码]动动嘴皮,AI秒出图!2025最炸裂图标神器:免费生成+手机实时预览
我没房子的时候,每年赚的钱比不上房子每年涨的钱。等我咬牙买了,每年赚的钱,比不上房子每年亏的钱

过早客微信公众号:guozaoke • 过早客新浪微博:@过早客 • 广告投放合作微信:fullygroup50 鄂ICP备2021016276号-2 • 鄂公网安备42018502001446号