迭代和递归

背景

有一次和同事聊天,提到了迭代和递归,除了上学那会儿,这概念好久不用。突然有点儿懵逼,简单思考记录如下。

递归

原问题采用分而治之思想,可分解成子问题,且子问题解决的逻辑与原问题一样,但规模更小,采用轮回范式。

在程序实现中,递归代码在形式上的体现是:

  1. 程序自己调用自己。
  2. 不能无限调用,要有个程序出口。

缺点:一般认为性能不好,玩不好会栈(stack)溢出。

迭代

迭代也叫辗转法,通过一次次的循环,一轮轮的计算,不断用旧值推新值(推陈出新),接近或得到最终结果。个人感觉,迭代中可以分而治之,也可不分而治之,每轮迭代中的逻辑不一定与原问题解决逻辑等价。

迭代思想的体现:

  1. 求最大公约数的欧几里得算法。
  2. 求近似平方根的牛顿迭代法。
  3. 二分查找法。
  4. 持续交付,不断优化。

猜你喜欢

转载自blog.csdn.net/qq_29047189/article/details/106887319