使用C的HANOI塔

时间:2013-09-08 05:49:51

标签: c recursion

我刚刚使用递归为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
 }
}

1 个答案:

答案 0 :(得分:3)

虽然你的程序运行正常。可能this正是您要找的: -

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

enter image description here