【发布时间】:2022-01-04 15:26:32
【问题描述】:
在TOH(河内塔)中打印从源到目的地的移动磁盘可以很容易地用C/C++编写。(具有递归功能) 但是我们如何打印每一步的索引呢? C代码-
#include<stdio.h>
void tower( int disk, int peg1, int peg2, int peg3);// function declaration
int main()
{
int disk;
int peg1= 1, peg2= 2, peg3= 3;//numbering
puts("enter disk");
scanf("%d", &disk);//read disks
tower(disk, peg1, peg2, peg3);//function using
return 0;
}
void tower( int disk, int peg1, int peg2, int peg3)//function definition
{
if(disk ==1)//if only 1 disk is avialable
{
printf("move disk from peg%d to peg%d\n",peg1,peg3);//moving disk from source to destination
}
else
{
tower(disk-1, peg1,peg3,peg2);//moving n-1 disk from peg 1 to peg2 using peg3
printf("move disk from peg%d to peg%d\n", peg1,peg3);//move last biggest disk
tower(disk-1,peg2,peg1,peg3);//moving n-1 disk from peg2 to peg3 using peg1
}
它可以工作并打印输出。
但是有没有办法索引(1,2,...)每个步骤,比如-
- 将磁盘从 peg1 移动到 peg3
- 将磁盘从 peg1 移到 peg2
【问题讨论】:
-
Edit 并向我们展示您迄今为止编写的代码。然后明确每一步打印索引是什么意思。另请阅读:How to Ask.
-
上面的递归函数打印输出,但是如何编号(1,2,3,4....)每个打印行(步骤)?
-
为什么我会收到 -ve 票??????
-
因为您的问题的第一个版本非常糟糕。现在好多了,我收回了我的反对票。但这仍然有些不清楚。您应该添加一个输入和期望与实际输出的示例
标签: c function recursion towers-of-hanoi