C中,用递归实现汉诺塔时,出现问题

发布网友

我来回答

2个回答

热心网友

1.else要用大括号包起来 
2. 函数可以不要返回值
//如果满意请采纳最佳答案~
#include<stdio.h>

void hanruota(int,char, char, char);

int main()
{
int i=0;

printf("请输入需要移动的盘子:");
scanf("%d",&i);

hanruota(i,'A', 'B', 'C');

getchar();
getchar();
return 0;
}

void hanruota(int n, char A, char B, char C)
{
if(1==n)
printf("直接将编号%d的盘子直接从%c柱子移到%c柱子\n",n, A, B, C);
else
{
hanruota(n-1, A, B, C);
    printf("将编号为%d的盘子从%c柱子通过%c移动到%c\n",n, A, B, C);
     hanruota(n-1, B, A, C);
}
}

热心网友

很简单的问题

你要记住两个递归:

1。调用自身

2。考虑无限数量的调用不能拥有自己的特殊情况,总有结束的时间,那么这个时候,我们专门治疗。

其他里面你这个程序是调用自身的过程中,我相信你能明白这意味着什么。如果在这种特殊情况时,只有一张光盘如何做到这一点,但它是在执行其他?显然不是,在这个时候应该直接从接收另一列,如果它被描述为一列,事实上,答案是这一步,退后一步到n开始产生。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com