社区
C++ 语言
帖子详情
学习递归
haizi_24
2009-05-04 11:00:26
请问大家,如何学习递归,特别是循环体内的递归?我尝试思考递归程序的执行过程,发现很混乱。请大家给与帮助。
...全文
118
19
打赏
收藏
学习递归
请问大家,如何学习递归,特别是循环体内的递归?我尝试思考递归程序的执行过程,发现很混乱。请大家给与帮助。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dskit
2009-05-05
打赏
举报
回复
汉诺塔学递归
猫已经找不回了
2009-05-05
打赏
举报
回复
[Quote=引用楼主 haizi_24 的帖子:]
请问大家,如何学习递归,特别是循环体内的递归?我尝试思考递归程序的执行过程,发现很混乱。请大家给与帮助。
[/Quote]
可以自己尝试递归转成循环加栈的形式,这样容易看清楚些。不过不是所有的递归都能转。
可以看看这个贴
http://topic.csdn.net/t/20020606/19/784328.html
nwao7890
2009-05-05
打赏
举报
回复
我同楼主一样,来学习递归了,我感觉太难抽象出递归来了
jackyjkchen
2009-05-05
打赏
举报
回复
看递归图,就明白了
liao05050075
2009-05-05
打赏
举报
回复
慢慢来吧。见得多,用得多了,也就理解了。
想当初我开始看递归的时候昏到不行。然后就不去理它,过了一阵再看,发现原来就那么简单而已。
有时候现在看不明白的东西可以留着,等回头再看。随着你的知识的增加,你有可能过一阵就看明白了
lingyin55
2009-05-05
打赏
举报
回复
其实不难的,给一个详细的讲解递归原理的链接,
分步说明了每一次的操作。参考下吧
http://www.bycnsky.cn/article.asp?id=238
pathuang68
2009-05-05
打赏
举报
回复
[Quote=引用 4 楼 jixingzhong 的回复:]
其实很简单,就明白递归的第一步,第n步和最后一步就可以了
[/Quote]
LS说得对。
曾经和很多朋友讨论这个问题,最后的结论是,某些人觉得递归很难理解,有些人则觉得在简单不过了,呵呵,两个极端啊,所以如果你觉得递归不好理解,这也是很正常。
在此我举一个计算阶乘的例子,看看能否让你
突然明白起来
(C程序,应该非常容易转换成java程序):
#include <iostream>
#include <stdio.h>
using namespace std;
long factorial(long n) //计算n的阶乘
{
long result = 1; // 先将结果设定为1,因为1! = 1,
if(n > 1) // 如果n > 1
{
result = factorial(n - 1) * n; // 比如3的阶乘 = factorial(2) * 3
}
else // 否则 n = 1
{
result = 1 * result; // 由于factorial(1) = factorial(0) * 1,其中
} // factorial(0)在此程序中未被定义,因此可视为递归的
return result; // 结束条件,并将factorial(0)设置成了1
}
int main(void)
{
cout << factorial(1) << endl;
cout << factorial(2) << endl;
cout << factorial(3) << endl;
cout << factorial(4) << endl;
cout << factorial(5) << endl;
cout << factorial(6) << endl;
return 0;
}
输出结果:
1
2
6
24
120
720
当然计算阶乘用循环也很好的。
另在设计模式中Composite模式实际上也可以实现递归,而那个递归或许你会觉得更自然一点,请看:
http://blog.csdn.net/pathuang68/archive/2009/04/25/4122725.aspx
yeliangang
2009-05-05
打赏
举报
回复
递归不难,难的是把问题抽象为递归形式,再求解的过程
goodname
2009-05-05
打赏
举报
回复
简言之,只不过是不断的调用同一个函数而已。
ysysbaobei
2009-05-05
打赏
举报
回复
顶
amossavez
2009-05-05
打赏
举报
回复
搞清楚递归,主要是把过程弄清楚,过程清楚了,再找规律,也就是进行抽象!!
自律则自由
2009-05-05
打赏
举报
回复
把你的思路搞清楚,开始的时候可能会出现在错误,但不要紧,多练几次。
加油!
光宇广贞
2009-05-05
打赏
举报
回复
递归啊……
学好它之前先复习一下高等数学中的级数部分。
然后你想不会都不可能了……
程序上遇到的困惑一定是把数学给忘了……
Paradin
2009-05-05
打赏
举报
回复
逻辑上是树
实现是栈
tonforce
2009-05-04
打赏
举报
回复
开始看起来是比较绕
我到现在还比较害怕递归的干活。
jixingzhong
2009-05-04
打赏
举报
回复
其实很简单,就明白递归的第一步,第n步和最后一步就可以了
arong1234
2009-05-04
打赏
举报
回复
递归自己没有什么好的学习方法,关键在于自己理清思路。尝试手工画一画每层函数调用时的局部变量的值
mengde007
2009-05-04
打赏
举报
回复
发个链接;
http://baike.baidu.com/view/1733593.htm
主要是举一反三;
S_zxing
2009-05-04
打赏
举报
回复
递归应该是使你把程序看得更清楚的
非递归才难看懂呢
递
归入门、
递
归遍历、
递
归穷举算法
本课程带你从
递
归算法基础入手,课程是精讲大量实际项目中常用到的案例,课程深入浅出,包括
递
归入门,
递
归遍历、弟归穷举算法及各种项目,适合算法爱好者一起
学习
,后附每堂课项目源码,感兴趣可以观注博客,不定期更新
在
学习
递
归 过程中的感悟
我
学习
递
归的动因是因为做题过程中有一些怎样解决都无法方便解决或根本用普通算法根本无法解决的问题,在这种疑惑的状态,我有了解到,这些题如果用
递
归解决的话会更顺手,简易。但是在刚开始
学习
的时候,我并不知道
递
归是什么东西,只是先百度了一下,百度内容如下: -------------------------------------------------------------------------------------------------------------------------...
如何
学习
递
归
在很长一段时间中我都没弄懂
递
归到底是如何去工作的,最近几天我一直在
学习
递
归,对其有了一些领悟,希望对您有所帮助。我觉得
学习
递
归以下两个观念是比较重要的:
用非
递
归方法实现
递
归算法时_
学习
递
归的另一种方法
用非
递
归方法实现
递
归算法时 每个学期,我都会通过一项调查,以获取有关我的教学的一些反馈。 上学期终于有人给我写一篇新文章的想法。 特别是,他们想了解有关
递
归的更多信息,所以我认为我会综合一些技巧。
递
归概述 对于那些可能是第一次
学习
递
归的人,我想我会提供一些有关概念的概述。 特别地,
递
归是一种依赖于解决较小子问题的问题解决技术。 换句话说,不是继续直接解决问题,而是继续分解问题,直到找...
学习
递
归典型例子的一些心得
斐波那契数列 f(n) = f(n-1)+f(n-2),(n>=2) f(n) = 1,(n = 1) f(n) = 0,(n=0) 这里很容易得到函数的
递
归形式 直接给出C++代码 int Fibonacci(int n) { if (n <= 0) return 0; if (n == 1) return 1; return Fibonacci(n - 1) + F...
C++ 语言
64,683
社区成员
250,490
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章