1. 递归是计算机科学和数学中的一个极其重要的问题求解工具.在程序设计语言中可以用它来定义语言的语法,在数据结构中可以用它来编制表和树结构的查找和排序算法.数学家们则将递归用于组合数学领域,其处理对象是大量的计算和可能性问题.递归都是算法研究.运算研究模型/博弈论和图论的重要课题.
递归概念:
大多数人不会自然地想到递归.例如,如果要求定义幂函数X的N字方,其中X为实数,而N为非负整数,一种典型的做法骒用X的重复乘积:
如果一种算法的定义组成如下,则它就是递归的.
1.对应于某些参数可以求值的一个或多个终止条件.
2.一个递归步骤,它根据先前某次值求当值.递归步骤最终必须导致终止条件.
递归定义是对递归函数的自然应用.例如,有些编译器使用语言语法的BNF定义以及递归下降的语法分析算法,将程序翻译成机器代码.不同的产生规则,被编写成不同的函数,这些函数调用自身或其他产生规则结束.这一过程可能包含间接递归,例如规则P调用规则Q,而规则Q以调用规则P结束.
递归是对树进行定义和扫描的强有力的工具,
递归函数的结构可以用计算非负整数的阶乘问题进行说明.非负数的阶乘被定义为所有小于或等于N的正整数的积.若用N!表示该值,则N!=N*(N-1)*(N-2)*.....*2*1