在C语言中求出河内塔的非递归算法

发布于 科技 2024-03-10
4个回答
  1. 匿名用户2024-01-26

    n 板 a[0] a[n-1]。

    在 B 的帮助下从 A 移动到 C

    首先,确定 n 的奇偶校验,如果 n%2=1

    for i=n-1 to 2 i-=3

    if n-2>0

    将 A[I-2] 从 A 移动到 C

    将 A[i-1] 从 A[i-1] 移动到 B,将 A[i-2] 从 C 移动到 A[i],将 A[i] 从 A[I] 移动到 C

    if n-2>0

    将 A[I-1] 从 B, AI-1] 移动到 C,将 A[I-2] 从 A, Endif 移至

    endfor

    否则 n 是偶数,类似。

    endif

  2. 匿名用户2024-01-25

    A、B、C三个塔,先将A塔上的N-1板移到C,再将1移到B,再将剩余的N-1移到A

  3. 匿名用户2024-01-24

    hanot (n-1,b,a,c);(说明:在A塔的帮助下,将B塔的(N-1)移动到C塔)。

    为了在C的帮助下实现从A到B的n个磁盘

    思路如下:首先考虑极限 当只有一个磁盘时,磁盘可以直接来自一个 ->b。

    当有 2 个板时,将 A -> C 的 1 个板放入 2 个板,然后放入 2 个板 A->B,然后放入 C - B 的 2 个好板。

    当有 n 个磁盘时,借助 B 将 n-1 个磁盘移动到 C,然后将 N 个磁盘从 A 移动到 >B。

    此时,只要在A的帮助下将n-1从C移动到B,那么N-2磁盘就可以在B的帮助下移动到A。

    递归,即在奔跑的过程中称呼自己。

    什么是递归:

    1.子问题必须与原始问题相同且更简单;

    2.不能无限调用,必须有出口,简化为非递归状态处理。

    在数学和计算机科学中,递归是指由一个(或多个)简单基本情况定义的一类对象或方法,并规定所有其他情况都可以简化为它们的基本情况。

    以上内容是指:百科全书-递归公式。

  4. 匿名用户2024-01-23

    河内塔递归算法是算法分析。该算法的实现可以简单地分为三个步骤:将 n-1 个板从 A 移动到 B; 将第 n 个板从 A 移动到 C,将 n-1 板从 B 移动到 C。

    河内塔**及其应用

    传说在古印度的圣殿中,有一种叫做河内塔的游戏。 游戏在一个铜板装置上进行,有三根杆(编号为A、B、C),64个金板从下到上,从大到小依次放置。

    游戏的目标:将 A 栏上的所有圆盘移动到 C 栏上,并仍然以相同的顺序堆叠它们。 操作规则:

    一次只能移动一块板,在移动过程中,三根杆始终保持在底部,小板在顶部,并且在操作过程中可以将板放在任意一根杆A、B和C上。

    河内塔问题就是一个典型的递归方法解决的问题,在实际教学中,在传统教学方法的基础上,可以采用计算机辅助教学对算法教学进行模拟和演示,使学生更容易接受和理解递归算法的思想,不仅可以提高学生的学习兴趣, 同时也取得更好的教学效果。

相关回答
4个回答2024-03-10

# include

void hannuota(int n,char a,char b, char c); >>>More

7个回答2024-03-10

#include

void move(int n,char x,char y); >>>More

9个回答2024-03-10

对于一个数是否为素数的要求,将这个数除以从二到这个数的平方,得到最大的整数,如果不可整除,则表示该数是素数。

2个回答2024-03-10

至于递归,你可以把它想象成一次运行一个句子。 当您需要保存状态时,系统会自动使用堆栈为您保存。 让我们以你说的例子为例: >>>More

7个回答2024-03-10

以 358934760892734899+38960302975237462 为例:

1.计算结果的位数。 >>>More