鱼C论坛

 找回密码
 立即注册
查看: 2205|回复: 6

关于c语言递归

[复制链接]
发表于 2014-2-26 14:59:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
昨天看了小甲鱼的函数中关于递归,关于那个汉诺塔问题,我始终不能理解,望知道的能够告诉我一下,谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-26 18:16:41 | 显示全部楼层
简单的说就是函数循环调用自己,你可以在递归的函数里面下断,单步走看看流程就明白了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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");
}

评分

参与人数 1鱼币 +3 收起 理由
___佳ヾ↘ + 3 谢谢,我想我还是在多多的看看视频

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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了
原理上讲递归是一样的,首先有一个可以调用自己的函数
并要求函数每次调用都是要有部分进行变化的(例如某参数)并且向着下面说的结果变化,
其次给出调用后可以结束的,也就是参数变化到某情况可以有明确的(很重要的词)结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-27 17:19:56 | 显示全部楼层
的确不好理解,我也是一样!但我要告诉你,随着时间的推移和你知道的积累还有你不解的努力你慢慢会理解的。我现在开始理解了百分之70左右吧。好奇妙的编程,健议你去百度一下上面有很多价绍的能不能理解就要看你自已了!!!^ _^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-28 14:50:23 | 显示全部楼层
提醒你一下,如果实在看不懂就算了,毕竟递归本来就牵扯到内存的知识,等你学数据结构和算法的时候再来研究也不迟,你实在想看的话可以看看小甲鱼老师新出的数据结构视频,里面也有汉诺塔,比之前讲得更好。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-28 16:02:19 | 显示全部楼层
两包烟的钱,把不了妹买不了田,不如拿来支持小甲鱼推出更多原创教学视频!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 18:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表