-1

我刚刚使用递归为 C 语言中的河内塔问题编写了一个程序。但强调的是当总没有这样一个问题的复杂性时如何管理。磁盘数量类似于 4,5,方法本身的两个 TOH() 递归调用中的逻辑是什么。程序如下

#include<stdio.h>
#include<conio.h>
void TOH(int n,char x,char y,char z);

void main() {
 int n;
 printf("\nEnter number of plates:");
 scanf("%d",&n);
 TOH(n,'A','B','C');
 getch();
}

void TOH(int n,char x,char y,char z) {
 if(n>0)
 {
  TOH(n-1,x,z,y); // Recursive call 1 
  printf("\n%c -> %c",x,y);
  TOH(n-1,z,y,x); // Recursive call 2
 }
}
4

1 回答 1

3

尽管您的程序运行良好。可能就是您要寻找的东西:-

FUNCTION MoveTower(disk, source, dest, spare):
IF disk == 0, THEN:
    move disk from source to dest
ELSE:
    MoveTower(disk - 1, source, spare, dest)   // Step 1 above
    move disk from source to dest              // Step 2 above
    MoveTower(disk - 1, spare, dest, source)   // Step 3 above
END IF

在此处输入图像描述

于 2013-09-08T05:56:02.380 回答