------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
参加基础测试的时候,后面有两道递归的题目没有写,只有7.7分,看到室友得了9分感觉自己很有可能要被淘汰啊。进黑马是要按分数排序的,瞬间感觉自己被那个“注:能完成多少就提交多少,不必太在意这项得分。。。”给坑了。当时希望尽快走完流程,再看到那个注所以就真的把递归的两道题直接放弃了。
虽然自己在社团里面天天接触到的是C语言,但是在编写单片机程序的时候确实没有用到递归,所以这一块也确实不熟,知道有这么个东西,但是不会用。这一次写博客就从它开始了,算是对自己的查漏补缺吧!
递归的定义:
程序调用自身的编程技巧叫做递归。说白了就是函数自己调用自己。递归通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。
递归的2个条件:
1. 自己调用自己
2. 必须有一个明确的返回值
递归的缺点:
1. 递归的运行效率较低
2. 递归次数过多容易造成栈溢出
由于上面的缺点,,所以一般不提倡用递归算法设计程序。除非没有更好的算法或者某些特定情况,递归更为合适的时候。
题目:
有八个人坐在一起,问第8个人多少岁?他说比第7个人大3岁。问第7个人多少岁?他说比第6个人大3岁。问第6个人多少岁?他说比第5个人大3岁。问第5个人多少岁?他说比第4个人大3岁,以此类推,最后问第1个人多少岁?他说是10岁。请问第8个人多大?(C语言)