美文网首页
编程思想之递归

编程思想之递归

作者: Running__ | 来源:发表于2017-06-29 23:54 被阅读8次

本文章的代码如下链接:https://github.com/RunningIOS/HanoiDemo

工作中偶尔用到递归编程,最近抽空看看网上的文章,在解决汉诺塔问题上的解决问题思路很受启发。

经典的汉诺塔问题(这里不具体介绍规则了),面对看似相当复杂的问题,如果按照一般的思维去思考整过移动过程那个累呀,总觉得没底气实现呀。如下图所示,从左到右有A、B、C三根柱子,其中A柱子上面有从小叠到大的n个圆盘,现要求将A柱子上的圆盘移到C柱子上去,期间只有一个原则:一次只能移到一个盘子且大盘子不能在小盘子上面,求移动的步骤和移动的次数

我们可以使用假设法进行分析问题:

要想A中的最大的圆盘移动到C中,那么A上面的圆盘全部都得移动到B中,然后再将A上面的圆盘全部移动到C中即可完成任务,那么如何将A上面的圆盘全部移动到C中呢,其实是可以重复了上面的移动方法,所以移动过程可以这样进行

1、将A上面的除最大的圆盘全部移动到B中

2、将A中最大的圆盘移动到C中

3、将B中的圆盘全部已到C中任务即可完成

为了完成3中的任务,又可以拆分任务

4、现将B中的除最大的圆盘全部移动到A

5、将B中最大的圆盘移动到C中

6、将A中的全部圆盘移动到C中即可完成任务

为了完成6中的任务,又可以拆分任务

.

.

.

面对一个很大的问题时,我们尝试分析出一些规律,尝试拆分成小问题,然后再把小问题继续拆分为更小的问题,循环往复地拆分下去,直到不能再拆分为止,对于这种问题就可以使用递归方法解决。

相关文章

  • 编程思想之递归

    本文章的代码如下链接:https://github.com/RunningIOS/HanoiDemo 工作中偶尔用...

  • 归并排序

    图解 思想:分治思想 分治思想是算法常用的思想。实现方式通常是递归。分治是一种解决问题的处理思想,递归是一种编程技...

  • 算法02-递归

    算法02-递归 一、定义 1、思想 程序调用自身的编程技巧称为递归(recursion)。 递归做为一种算法在程序...

  • 常见算法思想3:递归法

    递归法 在计算机编程应用中,我们常常遇到代码的递归调用,事实上,递归是一种编程技巧,它是分治思想的一种重要体现。递...

  • 【Scala】尾递归优化

    以递归方式思考 递归通过灵巧的函数定义,告诉计算机做什么。在函数式编程中,随处可见递归思想的运用。下面给出几个递归...

  • 013-函数2

    递归函数 应用场景 递归是一种编程思想 如果要遍历一个文件夹下面所有的文件,通常会使用递归来实现 递归的特点 函数...

  • 数据结构之递归

    数据结构之递归 1.递归的概念 简单的说: 递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解...

  • 递归算法

    递归: 自己调用自己的编程思想 需要递归的数据项只有0个,特殊处理一波 需要递归的数据项只有1个,特殊处理一波 多...

  • 递归

    什么是递归 递归是一个神奇的编程方法,一方面,递归的代码非常简洁,写出来让人赏心悦目,另一面,虽然递归的思想很容易...

  • Rust语言编程实例100题-028

    Rust语言编程实例100题-028 题目:递归练习。程序调用自身的编程技巧称为递归( recursion)。递归...

网友评论

      本文标题: 编程思想之递归

      本文链接:https://www.haomeiwen.com/subject/sftbcxtx.html