递归与迭代的区别与联系

       递归算法,简而言之就是一种函数调用函数自身来完成算法设计的方法。

       迭代算法是用计算机解决问题的一种基本方法。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一指令进行重复执行,在每次执行这组指令时,都从变量的原值推出它的一个新值。

Fibonacci数列的递归实现:

int Fib(int n){
   int fibn;
   if(n==0)
        fibn = 0;
   else if(n == 1)
        fibn == 1;
   else
        fibn = Fib(n-1) + Fib(n-2);
   return fibn;
}

Fibonacci数列的迭代实现:

int Fib(int n){
    int F1 = 0, F2 = 1, F3;
    for(int i = 0; i <=n; i ++){
        F3 = F2 + F1;
        F1 = F2;
        F2 = F3; 
   }
}

递归算法虽然强大,但是也不是万能的。从本质上来看,递归其实是方便了程序员却难为了机器。使用递归算法,只要得到了递归数学公式就能很方便地写出程序,程序可读性强,容易理解。但递归式用堆栈机制实现的,每深入一层递归,都要在内存中占去一块栈数据区域,这样一旦递归嵌套层数较深,计算机会力不从心,在空间上甚至会以内存崩溃而告终。即使能够完成递归计算,也会占据大量的内存空间,额外消耗大量的函数传递和函数调用资源。


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值