栈和队列篇·第四章·栈与递归

什么是递归?

递归就是指一个函数、过程、方法或者数据结构,在其定义的内部又直接或间接的调用自身的应用,称其为递归(Recursion)。

在调用一个函数(程序)的过程中又直接或间接地调用该函数(程序)本身,称为函数的递归调用

递归包含终止条件(递归出口),当满足这个条件时就终止向下递归,使问题得到解决。

算法设计

例:阶乘函数n!的定义如下
n!= 0!=1和nX(n-1) 1>0
前后分别为终止递归条件和递归步骤
对于其术士表述:

int testn(int n){
    if(n==0)return 1;
    else return (n*fact(n-1));
}

设计步骤如下:
1.将复杂的原问题分解为一个或多个小规模、但具有原问题特性的子问题。较大的问题递归地用较小的子问题表示,解原问题的方法同样可以用来解决这些子问题。

2.确定一个终止条件。

总结

对于以上,首先要将问题转化为比原问题小的同类规模,归纳出一般的递推公式,处理的对象要有规律的递增或者递减,当规模小到一定程度后结束递归调用,逐层返回。

对于一些特殊的数据结构,如二叉树、广义表,本身的结构就具有递归特性,所以对它们的操作递归的描述。值得注意的是,虽然有些问题本身不具有递归的结构,但是使用递归的方法比迭代更为简易,如八皇后问题、汉诺塔问题等。

//之后是使用汉诺塔问题对递归的注解-1.20

你可能感兴趣的:(栈和队列篇·第四章·栈与递归)