小白的数据结构与算法学习笔记(十五)----递归算法

本文介绍了递归与迭代的区别,指出递归虽然简洁易懂但可能导致较高的时间和空间消耗。文章通过斐波那契数列、折半查找和汉诺塔等实例详细阐述了递归的应用,并强调了递归函数必须包含结束条件以避免无限循环。
摘要由CSDN通过智能技术生成

一、递归与迭代的区别

简单来说,递归使用的是选择结构,迭代使用的是循环结构。

递归就是自己调用自己,事先不知道要调用多少次或难以知道调用多少次;迭代就是事先已知循环多少次,直接循环。

递归让程序结构更加清晰,简洁,容易理解,但会消耗大量时间与内存,迭代无需。

递归函数分为调用和回退阶段,回退顺序就是调用顺序的逆序!!!

递归一定需要一个结束条件,使其不再调用自身而开始回调!!否则将陷入无限制的循环中。

二、递归的应用

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值