浅析C语言递归算法
作者:李伟
来源:《电脑知识与技术》2012年第30
        摘要:递归算法,结构清晰,形式简单,符合人的思维习惯,容易被理解和阅读,因而成为计算机程序设计中的一种重要方法,掌握它也有助于理解其他算法。该文阐述了递归算法的基本概念,成立的三个条件,直接和间接递归分类,通过实例深入分析递归在数据结构、函数应用和执行过程中的应用,以及将递归转化为非递归的一般方法。
        关键词:递归;算法;消除;程序;应用
        中图分类号:TP311 文献标识码:A 文章编号:1009-3044201230-7229-06
        1 递归概念
        1.1 概述
        本文阐述了递归算法的基本定义、成立的必要条件和递归执行的特点以及在实例中的具体应用,让学生能理解递归是一种思想这个概念。
        在生活实际中,有些问题是不能用数学公式解决的,需要通过其他方式、其他算法才能完成,其他重要算法有分治法、回朔法和动态规划等。分治法的三个步骤为:分解:将当前区间一分为二,求分裂点;求解:递归地对两个子区间进行归并排序;组合:将已排序的两个子区间归并为一个有序的区间。其递归的终结条件:子区间长度为1(一个记录自然有序)。 回朔法的三个步骤:搜索策略:符合递归算法,问题解决可以化为子问题,其子问题算法和原问题相同,只是数据增大或减少;控制策略:避免不必要的穷举搜索,遇到搜索失败,从失败点返回到上一点重新搜索;数据结构:用数组保存搜索过程中的状态、路径。可见,其他算法依然以递归算法为基础,利用递归帮助解决问题。
        1.2 概念和成立条件
        递归是设计和描述算法的一种有力的工具,它在复杂算法的描述中被经常采用
        1.2.1 概念
        递归函数c语言规则一个函数、过程、概念或数学结构,如果在其定义或说明内部直接地或间接地出现有其本身的引用,或者是为了描述问题的某一状态,必须用到它的上一状态,而描述上一状
态,又必须用到它的上一状态………这种用自己定义自己的方法,称之为递归或者是递归定义。