Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Recursion 河内塔中的递归_Recursion_Towers Of Hanoi - Fatal编程技术网

Recursion 河内塔中的递归

Recursion 河内塔中的递归,recursion,towers-of-hanoi,Recursion,Towers Of Hanoi,我已经阅读了河内塔的问题陈述和解决方案。该解决方案指出,当您必须将一组N个磁盘从a移动到B时,请使用C作为临时磁盘,并将N-1个磁盘从a转移到C。然后将第N个磁盘从a转移到B,然后将N-1个磁盘从C转移到B。我知道问题的大小已减小,因此是递归实现的竞争者。但是,一次传输的磁盘不能超过1个。首先,我们如何使用递归传输N-1个磁盘。。另请参见和维基百科页面 递归如下:你知道如何移动1张光盘,假设你知道如何移动n-1张光盘,你如何移动n张光盘 “假设”部分是您的递归:您通过移动9、1和9来移动10张光

我已经阅读了河内塔的问题陈述和解决方案。该解决方案指出,当您必须将一组N个磁盘从a移动到B时,请使用C作为临时磁盘,并将N-1个磁盘从a转移到C。然后将第N个磁盘从a转移到B,然后将N-1个磁盘从C转移到B。我知道问题的大小已减小,因此是递归实现的竞争者。但是,一次传输的磁盘不能超过1个。首先,我们如何使用递归传输N-1个磁盘。

。另请参见和维基百科页面

递归如下:你知道如何移动1张光盘,假设你知道如何移动n-1张光盘,你如何移动n张光盘

“假设”部分是您的递归:您通过移动9、1和9来移动10张光盘。
要移动9张光盘,先移动8张,然后移动1张,再移动8张。
要移动8张光盘…


要移动两张光盘,先移动1,然后移动1,再移动1。

这是递归步骤。使用将
N
磁盘从A传输到B的相同算法将
N
磁盘从A传输到C。如果
N
为一,则只需移动单个磁盘即可。(或者,如果
N
为零,则不执行任何操作)

在伪代码中:

move(N, A, B):
    if (N > 0)
        move(N-1, A, C)
        move_single_disk(A, B)
        move(N-1, C, B)

有关更多详细信息,请参阅。以与传输
N
磁盘相同的方式递归传输
N
磁盘。当你进入一个磁盘时,传输是微不足道的。@ SrimaKutula:如果你用C++来标记这个问题,请添加一些源代码,或者删除标签。@ Paulpro真的吗?很好的解释@布莱安干笑@Srinath Kattula,我们可以执行
N-1
传输,通过执行一个磁盘
N-1
次的传输。如果这是你要问的。希望不是。