本帖最后由 超神级 于 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被调用
猜错的童鞋再看下,这个程序算是和递归类似吧待会后面如果看不明白回头再看下这个程序.函数是根据上个函数的完成而完成的
!(
)!猜对的童鞋和我进入下一阶段看这个程序!
*///
//递归如果没有出口的话的话迟早会溢栈的!
//递归就是一个直接或者间接调用自己的函数!递归必须要有一个出口(终止条件).
//好吧!开始第一个递归程序!求阶乘.
#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;
}
//看帖会贴是对楼主最大的支持!
如果你学会了请赞个!没学会拍块砖·.
话说学递归的话我就学习数据结构用到过!其他地方一次都没用过...递归用来解决数据结构里面的树和图问题!还有很多有趣题目!容易理解!简单直接!
|