一、递归与迭代的区别
简单来说,递归使用的是选择结构,迭代使用的是循环结构。
递归就是自己调用自己,事先不知道要调用多少次或难以知道调用多少次;迭代就是事先已知循环多少次,直接循环。
递归让程序结构更加清晰,简洁,容易理解,但会消耗大量时间与内存,迭代无需。
递归函数分为调用和回退阶段,回退顺序就是调用顺序的逆序!!!
递归一定需要一个结束条件,使其不再调用自身而开始回调!!否则将陷入无限制的循环中。
二、递归的应用
1、斐波那契数列:兔子繁殖问题
int Fib(int i)
{
if(i==0)return 0;
else if(i==1)return 1;
else return Fib(n-1)+Fib(n-2);
}
2、折半查找(key为已经从小到大排好序的数列)
int search(int key[],int low,int high,int k)
{
int mid;
if(low>high)return -1;
else
{
mid=(low+high)/2;
if(key[mid]==k)return mid;
if(key[mid]>k)return search(key,low