___佳ヾ↘ 发表于 2014-2-26 14:59:48

关于c语言递归

昨天看了小甲鱼的函数中关于递归,关于那个汉诺塔问题,我始终不能理解,望知道的能够告诉我一下,谢谢!

machimilk 发表于 2014-2-26 18:16:41

简单的说就是函数循环调用自己,你可以在递归的函数里面下断,单步走看看流程就明白了

394428311 发表于 2014-2-27 16:31:16

不能理解太正常了!你要知道【函数调用本身和其它函数没任何差别,只是复制了一份而已】。
我写了个小程序,你自己体会体会#include <stdio.h>

void f1();
void f2();
void f3();

int main(void)
{
        printf("1\n");
        f1();
        printf("2\n");

        return 0;
}

void f1()
{
        printf("3\n");
        f2();
        printf("4\n");
}

void f2()
{
        printf("5\n");
        f3();
        printf("6\n");
}

void f3()
{
        printf("7\n");
}

无念道长 发表于 2014-2-27 17:04:38

本帖最后由 无念道长 于 2014-2-27 17:06 编辑

额,我就不贴代码了,举个简单的例子:
a(n+1)=an+2
当你输入n=10的时候,应该是a11=a10+2;
同样a10不知道,你就会去算a10=a9+2;
这时a9又不知道,就这么算,是没有尽头的,
你需要给出一个头,比如a0=1;那么你就可以一步一步的算上去,
就能算到a11了
原理上讲递归是一样的,首先有一个可以调用自己的函数
并要求函数每次调用都是要有部分进行变化的(例如某参数)并且向着下面说的结果变化,
其次给出调用后可以结束的,也就是参数变化到某情况可以有明确的(很重要的词)结果

隨鈊乄鎍慾 发表于 2014-2-27 17:19:56

的确不好理解,我也是一样!但我要告诉你,随着时间的推移和你知道的积累还有你不解的努力你慢慢会理解的。我现在开始理解了百分之70左右吧。好奇妙的编程,健议你去百度一下上面有很多价绍的能不能理解就要看你自已了!!!^ _^

394428311 发表于 2014-2-28 14:50:23

提醒你一下,如果实在看不懂就算了,毕竟递归本来就牵扯到内存的知识,等你学数据结构和算法的时候再来研究也不迟,你实在想看的话可以看看小甲鱼老师新出的数据结构视频,里面也有汉诺塔,比之前讲得更好。

向阳 发表于 2014-2-28 16:02:19

{:5_107:}两包烟的钱,把不了妹买不了田,不如拿来支持小甲鱼推出更多原创教学视频!
页: [1]
查看完整版本: 关于c语言递归