在算法设计中,我们会遇到一些可以用直观的思维解决的问题。下面我们介绍三种基本的方法:穷举、递推和迭代。

1. 穷举法

穷举法是一种最简单的算法那设计策略,常常是直接基于问题的描述和所涉及的概念。一般来说,穷举法是最容易应用的,但是同时可能也是复杂度最高的算法。

比如说问题:求解已知平面内距离最近的两点。可以通过穷举遍历所有可能的解找到答案

int main()
{int n = 100;int x[100] = {};int y[100] = {};int minDistance = INT_MAX;for (int i = 0; i < n; ++i){for (int j = i+1; j < 100; j++){if (minDistance > sqrt(pow(x[i] - x[j], 2) + pow(y[i] - y[j], 2))){minDistance = sqrt(pow(x[i] - x[j], 2) + pow(y[i] - y[j], 2));}}}cout << minDistance << endl;return 0;}

2. 递推法

求解肥斐波那契数的时候,已知F(1)和F(2,),可以从F(3)开始已知递推求解F(n),进而得到想要的解。


3. 迭代法

迭代是一种不断用变量的旧值推出新值的过程。例如,程序设计中常用到的计数cnt=cnt+1(或cnt++),就是用变量cnt的值加上1后赋值给cnt;对k的求和s=s+k,就是用变量s的值加上k后赋值给s。这种用变量cnt、s的新值取代旧值的过程,实际上就是迭代。递推实际上也是根据递推关系式不断推出新值的过程,与迭代有很多共同之处。很多迭代过程可以应用递推来解决;反过来,很多递推过程也可以应用迭代来解决。

直接法-穷举、递推和迭代相关推荐

  1. 递归,递推,迭代的区别

    递归 程序调用自身的编程技巧称为递归,是函数自己调用自己. 使用递归要注意的有两点: 递归就是在过程或函数里面调用自身: 在使用递归时, 必须有一个明确的递归结束条件, 称为递归出口. 递归分为两个阶 ...

  2. 数据结构笔记 递推与迭代

    /* 递推算法:通过已知条件,利用特定关系得到中间结论,然后得到最后结果.1.顺推法:从已知条件出发,逐步推导出要解决问题的方法.例如斐波拉契数列.2. 逆推法根据结果推导出已知条件 */ // 斐波 ...

  3. 算法设计之—直接 遍历/穷举法、贪心算法、动态规划、回溯法、EM方法

    算法是对完成特定问题的程序执行序列描述,表象为从问题初始状态到问题结束状态的所有路径之中寻找可行路径,若无先验经验,根据执行方式不同可以划分为无规则和有规则(启发式)方法. 无规则方法为穷举,改进方法 ...

  4. PHP 递归和递推思想

    递归思想(递归函数): 递归思想的一个基本形式是在一个函数中,有至少一条语句,又会去调用该函数自身.(求n!问题用递归:杨辉三角问题用过递归-) <?phpfuntion digui($n){i ...

  5. php中的递归思想,PHP 递归和递推思想

    递归思想(递归函数): 递归思想的一个基本形式是在一个函数中,有至少一条语句,又会去调用该函数自身.(求n!问题用递归:杨辉三角问题用过递归-) funtion digui($n){ if($n==1 ...

  6. Javascript迭代、递推、穷举、递归常用算法实例讲解

    来源 | https://www.jb51.net/article/155800.htm 累加和累积 累加:将一系列的数据加到一个变量里面.最后的得到累加的结果 比如:将1到100的数求累加和 小球从 ...

  7. 累加、迭代、递推、穷举、递归 ,等运算,笔记

    8.计算 8.1累加: 累加:将一系列的数据加到一个变量里面,最后得到了累加的结果. 一般形式: 累加:V+=e: 累积:V*=e: V代表累加和累积,e代表累加累积项. 算法要点: 1.    初始 ...

  8. java穷举密码_穷举算法和递推算法(Java)

    穷举算法 概念: 最简单算法,依赖计算机的强大计算能力穷尽每一种可能的情况.穷举算法效率不高,但是适合一些没有明显规律可循的场合. 思想: 在使用穷举算法时,需要明确问题答案的范围,这样才可能在指定范 ...

  9. Javascript迭代、迭代、穷举、递归常用算法

    累加和累积 累加:将一系列的数据加到一个变量里面.最后的得到累加的结果 比如:将1到100的数求累加和 小球从高处落下,每次返回到原来一半,求第十次小球落地时小球走过的路程 <script> ...

最新文章

  1. 创建一个显示所有预定义WPF颜色的ListBox
  2. Linux下集群技术应用概述
  3. move std 函数 示例_确保(值类型)可拷贝类有默认构造函数
  4. 关于 Intel 8253/8254
  5. 《leetcode》best-time-to-buy-and-sell-stock-i-ii-iii
  6. matlab画直方图下标,matlab画二维数据直方图/画二维概率分布
  7. python中oxf2是多少_Python学习笔记[2]
  8. IN改写关联注意事项!
  9. 天龙八部科举答题问题和答案(全1/8)
  10. 人生十个阶段,每七年周期变化
  11. NBA数据爬取及存取
  12. python 判断字符串是否是纯中文或者英文
  13. 实用的一些网站 合集
  14. bulk插入 es_elasticsearch的helpers.bulk和es_client.bulk的用法
  15. 第三周铁人战队学习总结
  16. css 友情链接效果,SEO:友情链接是什么?友情链接检查样式方位排版
  17. Mysql增删改查sql语句练习
  18. Android 硬件加速使用总结
  19. CISSP认证的知识域,一起来看!
  20. 推荐本书《博赞学习技巧》

热门文章

  1. Mac 驱动检测不出来原因
  2. 金蝶EAS开发 第二弹:了解开发工具与基本使用(下)
  3. 金蝶EAS BOS开发固定报表流程
  4. 编程题——Fibonacci数列
  5. Android直播开发之旅(25):使用AES算法加密多媒体文件(+RSA+MD5+Base64)
  6. 关于AttributeError: module ‘torch.nn‘ has no attribute ‘Moudle‘的解决方法
  7. 洛谷P1460 健康的荷斯坦奶牛
  8. 罗克韦尔自动化2018年自动化博览会开始接受注册
  9. 由圆上三点确定圆心和半径(附PythonMatlab程序)
  10. 梯度下降法的简单理解