【软/自考】算法实用技巧——递归VS迭代
来源:互联网 发布:数据库应用软件开发 编辑:程序博客网 时间:2024/05/22 10:23
迭代和递归,在算法中很常用呢,算的上是算法中必不可少的实用技巧!让我们来了解一下吧。
递归:程序调用自身的编程技巧称为递归( recursion)。
迭代:迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。
【递归VS迭代】
递归和迭代都是循环的一种。
递归是重复调用函数自身实现循环。迭代是函数内某段代码实现循环。
递归循环中,遇到满足终止条件的情况时逐层返回来结束。迭代则使用计数器结束循环。很多情况都是多种循环混合采用。
例子:递归函数求n!
#include<stdio.h>long f(int n){ if(n==0) return 1; else return n*f(n-1);}main(){ int m,n=3; m=f(n); printf("%d!=%d\n",n,m);}f(n)是递归函数,在它的函数体中用到了它本身。
【迭代VS普通循环】
迭代的循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。
下方的代码是迭代。
for(i=1;i<=n;i++){ temp=temp*i; /temp*=i;这样的形式更有明显,容易辨认。 s=s+temp; /s+=temp;}temp和s都参与运算,同时也保存运算结果,下一次循环继续参与运算。
【借用临时变量】
1、交换两个存在于数组中数的位置
例子:出自一维数组逆置算法之一。
for(i=0;i<n/2-1;i++){ temp=a[i]; a[i]=a[n-1-i]; a[n-1-i]=temp;}
2、单链表插入操作
例子:出自单链表插入结点算法。p-data=x;p->next=head->next;head->next=p;
算法的学习还在继续,总结将不断出新,敬请期待。
0 0
- 【软/自考】算法实用技巧——递归VS迭代
- 递归vs迭代
- 递归、尾递归 VS. 迭代
- Java常用算法——迭代 & 递归篇
- 常见算法—累积累加、迭代、递推、递归
- 递归 vs. 迭代 & 动态规划
- NYOJ_94 cigarettes 递归VS迭代
- 迭代跟递归算法
- 迭代跟递归算法
- 简单算法--迭代/递归
- 算法 递归 迭代 阶乘
- 【算法】迭代和递归
- 迭代算法与递归算法
- [ZZ]迭代算法与递归算法
- 迭代算法与递归算法概述
- 递归算法与迭代算法总结
- 三种常用算法概述——遍试、迭代、递归
- 数据结构与算法学习笔记——二叉树遍历(一)(递归、迭代)
- 黑马程序员——面试题小总结2
- 单点登录
- 关于UINavigationController与UITableView聚合的发现
- ARM assembler in Raspberry Pi – Chapter 3
- Andorid多线程断点续传下载
- 【软/自考】算法实用技巧——递归VS迭代
- while判断值为cin输入值时,注意调试时要用文件结束符结束循环
- PHP:Fatal error: Class 'COM' not found in … 的处理办法
- free(): invalid pointer
- Linux抓包
- C++之文件重定向 通过txt读入数据和txt写数据
- Ubuntu安装bochs
- KVC中setValuesForKeysWithDictionary:
- java.lang.UnsupportedClassVersionError: org/json/JSONObject : Unsupported major.minor version 52.0