注册 登录
编程论坛 数据结构与算法

关于递归总是不能完全理解啊

令狐少侠56 发布于 2015-09-14 22:52, 3558 次点击
对于汉诺塔,我觉得一步步来就能敲出代码,可是有的时候碰到难一点的递归我就不明白了,尤其是for()循环语句里面含有递归函数,如果再加上if语句我就更难理解了,不知道函数怎样执行的,返回些什么,什么时候返回。
11 回复
#2
林月儿2015-09-17 18:05
以下是引用令狐少侠56在2015-9-14 22:52:44的发言:

对于汉诺塔,我觉得一步步来就能敲出代码,可是有的时候碰到难一点的递归我就不明白了,尤其是for()循环语句里面含有递归函数,如果再加上if语句我就更难理解了,不知道函数怎样执行的,返回些什么,什么时候返回。


同感
#3
令狐少侠562015-09-17 23:15
回复 2楼 林月儿
我后来看本书叫《啊哈算法》,是入门书,看完对递归的感觉比以前好一些。
#4
hjx11202015-09-18 02:29
递归可以简单的理解成上楼梯和下楼梯
顺时针时:
小明在XXX公司上班,公司在XXX大厦的6楼,从1楼到6楼一共132个台阶!
那么同理下班后从6楼到1楼也是132个台阶,假如小明个子比较高,上下楼道
一步就在两个台阶,求小明上楼主下楼的过程?
#include "stdio.h"
void main()
{
    void fun(int);
    fun(1);
}
void fun(int a)   
{   
    printf("%d\n",a);
    if(a<132){
        fun(a+2);
    }
    printf("%d\n",a);
}
#5
hjx11202015-09-18 02:31
晚了有点困,发错,求版主删除
#6
林月儿2015-09-18 11:44
求我啊
#7
hjx11202015-09-18 21:59
又是一个用for loop or while loop 规则去理解递归的大神
#8
林月儿2015-09-18 22:12
以下是引用hjx1120在2015-9-18 21:59:18的发言:

又是一个用for loop or while loop 规则去理解递归的大神


你在本版面单独开贴讨论递归和递推吧
#9
hjx11202015-09-18 22:23
回复 8楼 林月儿
我是一个小白啊!可没那本事单独开帖
#10
林月儿2015-09-18 22:34
以下是引用hjx1120在2015-9-18 22:23:06的发言:

我是一个小白啊!可没那本事单独开帖


我开也不合适啊,论坛高手如云。。。要是来拆台多尴尬啊
#11
令狐少侠562015-09-20 10:27
回复 10楼 林月儿
这个还是自己学比较好,我现在觉得我可能是练习的太少了,以前光看书去了。。。。。
#12
来生再见2015-09-21 20:38
递归就是不断的调用函数,函数就是封装了相同的代码的功能块,
如果需要重复执行相同的功能块(函数)就可以使用递归,
所以递归是可以使用for循环来代替的,
你可以试着把for循环成递归,递归写成for循环,你就会理解什么是递归了
在C++里面好像有一种编程模式叫函数式,具体的我也忘了
1