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