黑马程序员技术交流社区

标题: 关于C语言中的递归总结 [打印本页]

作者: L503254118    时间: 2015-10-16 07:47
标题: 关于C语言中的递归总结

程序调用自身的编程技巧叫做递归。说白了就是函数自己调用自己。递归通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。

递归的2个条件:

1.     自己调用自己

2.     必须有一个明确的返回值

递归的缺点:

     1.递归的运行效率较低

     2.递归次数过多容易造成栈溢出

由于上面的缺点,所以一般不提倡用递归算法设计程序。除非没有更好的算法或者某些特定情况,递归更为合适的时候。



基础测试的题目:

有八个人坐在一起,问第8个人多少岁?他说比第7个人大3岁。问第7个人多少岁?他说比第6个人大3岁。问第6个人多少岁?他说比第5个人大3岁。问第5个人多少岁?他说比第4个人大3岁,以此类推,最后问第1个人多少岁?他说是10岁。请问第8个人多大?(C语言)

代码部分:

#include

int main(int argc, const char * argv[])
{
    // insert code here...
    int result;
    result = diGui(8);
    printf("%d\n",result);
    return 0;
}


int diGui(int n)
{
    if (n==0) return 10;
    return diGui(n-1)+3;
}

输出的结果是34






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2