May.418 2021-09-14 13:59 采纳率: 0%
浏览 41

问迭代算法和递归算法

课程作业:分别用迭代算法和递归算法实现冒泡排序
请问这两种算法有什么区别?

  • 写回答

2条回答 默认 最新

  • zkkis 2021-09-16 20:56
    关注

    一、含义不同:

    递归是重复调用函数自身实现循环。迭代是函数内某段代码实现循环,循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。

    递归循环中,遇到满足终止条件的情况时逐层返回来结束。迭代则使用计数器结束循环。当然很多情况都是多种循环混合采用,这要根据具体需求。

    二、结构不同:

    递归与迭代都是基于控制结构:迭代用重复结构,而递归用选择结构。 递归与迭代都涉及重复:迭代显式使用重复结构,而递归通过重复函数调用实现重复。

    递归与迭代都涉及终止测试:迭代在循环条件失败时终止,递归在遇到基本情况时终止,使用计数器控制重复的迭代和递归都逐渐到达终止点:迭代一直修改计数器,直到计数器值使循环条件失败;递归不断产生最初问题的简化副本,直到达到基本情况。

    递归写冒泡:

    #include <iostream>
    
    using namespace std;
    
    int * mp(int a[], int start, int end){
        if(start<end){
            int temp = 0;
            for(int i = 0; i <= 8; i++){
                if(a[i]>a[i+1]){
                    temp = a[i];
                    a[i] = a[i+1];
                    a[i+1] = temp;
                }
            }
        end --;
        mp(a,start,end);
        }
        return a;
    }
    
    int main(){
        int start = 0;
        int end = 9;
        int a[10] = {7,6,2,1,5,6,4,0,8,5};
        int *p;
        p = mp(a,start,end);
    
        for(int j = 0; j <=8; j++){
            cout << *(p+j) << " ";
        }
        return 0;
    }
    
    

    迭代算法感觉跟递归的差不多,感觉没什么区别
    觉得有帮助的点一下采纳

    评论

报告相同问题?

问题事件

  • 创建了问题 9月14日

悬赏问题

  • ¥15 PCL注册的选点等函数如何取消注册
  • ¥15 问一下各位,为什么我用蓝牙直接发送模拟输入的数据,接收端显示乱码呢,米思齐软件上usb串口显示正常的字符串呢?
  • ¥15 Python爬虫程序
  • ¥15 crypto 这种的应该怎么找flag?
  • ¥15 设计一个时序电路,使其状态按2421(B)循环,并能自启动
  • ¥15 代码已写好,求帮我指出错误,有偿!
  • ¥15 matlab+波形匹配算法
  • ¥15 转录组分析做聚类树图时癌旁组被分到了癌组
  • ¥15 大一Python字典
  • ¥15 multisim电路设计(相关搜索:设计报告)