【软/自考】算法实用技巧——递归VS迭代

简介: 【软/自考】算法实用技巧——递归VS迭代

迭代和递归,在算法中很常用呢,算的上是算法中必不可少的实用技巧!让我们来了解一下吧。

       递归:程序调用自身的编程技巧称为递归( recursion)。

       迭代:迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。


【递归VS迭代】

       递归和迭代都是循环的一种。

       递归是重复调用函数自身实现循环。迭代是函数内某段代码实现循环。

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

       例子:递归函数求n!

1. #include<stdio.h>
2. long f(int n)
3. {
4. if(n==0)  return 1;
5. else  return n*f(n-1);
6. }
7. main()
8. {
9. int m,n=3;
10.     m=f(n);
11. printf("%d!=%d\n",n,m);
12. }

       f(n)是递归函数,在它的函数体中用到了它本身。

【迭代VS普通循环】

       迭代的循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。

下方的代码是迭代。

1. for(i=1;i<=n;i++)
2. {
3.     temp=temp*i;  /temp*=i;这样的形式更有明显,容易辨认。
4.     s=s+temp;     /s+=temp;
5. }

       temp和s都参与运算,同时也保存运算结果,下一次循环继续参与运算。


【借用临时变量】


       1、交换两个存在于数组中数的位置

       例子:出自一维数组逆置算法之一。

1. for(i=0;i<n/2-1;i++)
2. {
3.     temp=a[i];
4.     a[i]=a[n-1-i];
5.     a[n-1-i]=temp;
6. }


       2、单链表插入操作

       例子:出自单链表插入结点算法。

1. p-data=x;
2. p->next=head->next;
3. head->next=p;

       算法的学习还在继续,总结将不断出新,敬请期待。


相关文章
|
10天前
|
算法 Python
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果;贪心算法在每一步选择局部最优解,追求全局最优;动态规划通过保存子问题的解,避免重复计算,确保全局最优。这三种算法各具特色,适用于不同类型的问题,合理选择能显著提升编程效率。
28 2
|
1月前
|
算法 搜索推荐 Shell
数据结构与算法学习十二:希尔排序、快速排序(递归、好理解)、归并排序(递归、难理解)
这篇文章介绍了希尔排序、快速排序和归并排序三种排序算法的基本概念、实现思路、代码实现及其测试结果。
20 1
|
5月前
|
存储 算法 程序员
数据结构与算法===递归
数据结构与算法===递归
|
1月前
|
算法 定位技术
数据结构与算法学习九:学习递归。递归的经典实例:打印问题、阶乘问题、递归-迷宫问题、八皇后问题
本文详细介绍了递归的概念、重要规则、形式,并展示了递归在解决打印问题、阶乘问题、迷宫问题和八皇后问题等经典实例中的应用。
40 0
|
2月前
|
资源调度 算法
基于迭代扩展卡尔曼滤波算法的倒立摆控制系统matlab仿真
本课题研究基于迭代扩展卡尔曼滤波算法的倒立摆控制系统,并对比UKF、EKF、迭代UKF和迭代EKF的控制效果。倒立摆作为典型的非线性系统,适用于评估不同滤波方法的性能。UKF采用无迹变换逼近非线性函数,避免了EKF中的截断误差;EKF则通过泰勒级数展开近似非线性函数;迭代EKF和迭代UKF通过多次迭代提高状态估计精度。系统使用MATLAB 2022a进行仿真和分析,结果显示UKF和迭代UKF在非线性强的系统中表现更佳,但计算复杂度较高;EKF和迭代EKF则更适合维数较高或计算受限的场景。
|
3月前
|
算法
【算法】递归、搜索与回溯——汉诺塔
【算法】递归、搜索与回溯——汉诺塔
|
4月前
|
算法 Python
python中算法递归错误(Recursion Errors)
【7月更文挑战第18天】
69 1
|
3月前
|
算法
【算法】递归总结:循环与递归的区别?递归与深搜的关系?
【算法】递归总结:循环与递归的区别?递归与深搜的关系?
|
3月前
|
算法
【算法】递归、搜索与回溯——简介
【算法】递归、搜索与回溯——简介
|
4月前
|
搜索推荐 C++ Python
Python排序算法大PK:归并VS快速,谁才是你的效率之选?
【7月更文挑战第13天】归并排序** 使用分治法,稳定且平均时间复杂度O(n log n),适合保持元素顺序和并行处理。
36 5