搜索
查看: 1306|回复: 5
打印 上一主题 下一主题

【重新拾笔】(原创)递归篇!

[复制链接]
跳转到指定楼层
楼主
发表于 2014-2-25 22:20:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 超神级 于 2014-2-26 21:24 编辑

/*                递归篇start:
                         其实本人很少写技术性的帖子难免有很多遗落!欢迎大神提出宝贵的修改意见!
                        然后还有为了使讲的更加通俗易懂!递归篇写的有点多了!看了帖子的长度后请不要掉头
                        就跑!因为有很多知识点都是很简单的!*/
                       /* 话说递归真的很有趣!自己可以调用自己!这是现实生活没有的!
                        好了先谈谈递归的实现,递归可以实现是依靠栈!*/
                        /*
#include <stdio.h>
#include <stdlib.h>
void A(void)
{
        B();
    printf("A被调用\n");
}
void B(void)
{
        C();
     printf("B被调用\n");
}
void C()
    {
    printf("C被调了\n");   
    }
int main(void)
{
        A();
        system("pause");
        return 0;
}
/*运行结果是多少呢!猜测下!
O(∩_∩)O~估计有大意的童鞋猜错了吧!
运行结果是:
C被调了
B被调用
A被调用
猜错的童鞋再看下,这个程序算是和递归类似吧待会后面如果看不明白回头再看下这个程序.函数是根据上个函数的完成而完成的
!(
  1. 先调用后返回
复制代码

)!猜对的童鞋和我进入下一阶段看这个程序!
*///

//递归如果没有出口的话的话迟早会溢栈的!
//递归就是一个直接或者间接调用自己的函数!递归必须要有一个出口(终止条件).
//好吧!开始第一个递归程序!求阶乘.

#include <stdio.h>
#include <stdlib.h>
int A(int a)
    {
                if(1==a)//程序出口!
       return 1;
        else
       return A(a-1)*a;//此处调用自身!参数已经改变!a-1.!//问题的解决是根据上个问题的解决而解决的!也就是说第2次递归
    }//重新调用A函数只不过参数变成了4!第3次递归参数是3!第4次递归参数是2!第5次递归参数是1!然后if语句成立返回1,//然后第四次递归往下运行1*2第四次运行完毕!然后返回给第三次递归1*2*3然后函数执行完毕返回1*2*3*4然后返回给第2次递归
//1*2*3*4*5然后递归完成函数结束!把值返回给printf输出!新人容易误解的是return A(a-1)*a其实进行递归的时候A (a-1)执行
//调用A函数传参(a-1)!并没有把这段语句执行完毕 return [A(a-1)*a;]如果执行完毕程序就返回了何来递归呢!!执行的只是这部分return [A (a-1)]调用函数!等到上次递归返回的时候才把这段语句return A(a-1)*a执行完毕!
int main()

        printf("%d",A(5));//因为return返回来了!我直接输出了!
        system("pause");
        return 0;
}

//看帖会贴是对楼主最大的支持!
如果你学会了请赞个!没学会拍块砖·.
话说学递归的话我就学习数据结构用到过!其他地方一次都没用过...递归用来解决数据结构里面的树和图问题!还有很多有趣题目!容易理解!简单直接!


沙发
发表于 2014-2-25 22:35:12 | 只看该作者
最上面那个例子和递归没关系,main调用a, a调用b, b调用c而已,不能说是模拟递归

然后递归和循环的关系几乎都说错了……

点评

最上面那个例子和递归没关系,main调用a, a调用b, b调用c而已,不能说是模拟递归 只是跟递归调用类似,帮助新人理解吧。 然后递归和循环的关系几乎都说错了…… 已修改。。。  发表于 2014-2-25 22:42
板凳
 楼主| 发表于 2014-2-25 22:39:11 | 只看该作者
rosynirvana 发表于 2014-2-25 22:35
最上面那个例子和递归没关系,main调用a, a调用b, b调用c而已,不能说是模拟递归

然后递归和循环的关系 ...

。。。
地板
发表于 2014-8-19 22:29:37 来自手机 | 只看该作者
我上次看过,有点乱。
我看的自学考试教材,写的不错。就是比较绕。大概看了5遍以上,才稍有点明白。后来看C Primer Plus,讲的很祥细,才基本弄懂。最近又复习了下,我的例题就是模仿他的。
来自: 微社区
5#
 楼主| 发表于 2014-8-20 18:13:44 | 只看该作者
嗨,强哥! 发表于 2014-8-19 22:29
我上次看过,有点乱。
我看的自学考试教材,写的不错。就是比较绕。大概看了5遍以上,才稍有点明白。后来看 ...

第一次看递归的时候我也被绕进去了!当时不知道这是递归纳闷了很久..
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表