关于c语言递归
昨天看了小甲鱼的函数中关于递归,关于那个汉诺塔问题,我始终不能理解,望知道的能够告诉我一下,谢谢! 简单的说就是函数循环调用自己,你可以在递归的函数里面下断,单步走看看流程就明白了 不能理解太正常了!你要知道【函数调用本身和其它函数没任何差别,只是复制了一份而已】。我写了个小程序,你自己体会体会#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:06 编辑
额,我就不贴代码了,举个简单的例子:
a(n+1)=an+2
当你输入n=10的时候,应该是a11=a10+2;
同样a10不知道,你就会去算a10=a9+2;
这时a9又不知道,就这么算,是没有尽头的,
你需要给出一个头,比如a0=1;那么你就可以一步一步的算上去,
就能算到a11了
原理上讲递归是一样的,首先有一个可以调用自己的函数
并要求函数每次调用都是要有部分进行变化的(例如某参数)并且向着下面说的结果变化,
其次给出调用后可以结束的,也就是参数变化到某情况可以有明确的(很重要的词)结果 的确不好理解,我也是一样!但我要告诉你,随着时间的推移和你知道的积累还有你不解的努力你慢慢会理解的。我现在开始理解了百分之70左右吧。好奇妙的编程,健议你去百度一下上面有很多价绍的能不能理解就要看你自已了!!!^ _^ 提醒你一下,如果实在看不懂就算了,毕竟递归本来就牵扯到内存的知识,等你学数据结构和算法的时候再来研究也不迟,你实在想看的话可以看看小甲鱼老师新出的数据结构视频,里面也有汉诺塔,比之前讲得更好。 {:5_107:}两包烟的钱,把不了妹买不了田,不如拿来支持小甲鱼推出更多原创教学视频!
页:
[1]