当前位置:首页 » 编程语言 » 汉诺塔问题c语言
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

汉诺塔问题c语言

发布时间: 2022-01-14 16:54:48

c语言汉诺塔问题

哥们,你还没明白什么叫递归,用tc单步执行一遍看看你就会明白了,这里说太麻烦。

⑵ C语言汉诺塔问题,不是很理解

请注意,void hanoi ( int n, char a, char b, char c )
这里的a,b,c是三个char变量。
当执行调用hanoi(3,'B','C','A');时,“将a柱子上的最后一个盘子移动到c”,
其中的a的值就是'B',c的值就是'A',也就是“将B柱子上的最后一个盘子移动到A柱”了。

⑶ c语言递归问题: 汉诺塔问题:

//可运行的代码
#include <stdio.h>
void move(char x,char y) // 定义move函数
{
printf("%c-->%c\n",x,y);
}

void hannuota(int n,char one,char two,char three) // 定义hanuota函数
// 将n个盘从one座借助two座,移到three座
{

if(n==1)
move(one,three);
else
{
hannuota(n-1,one,three,two);
move(one,three);
hannuota(n-1,two,one,three);
}
}

int main()
{
int m;
printf("input the number of diskes:");
scanf("%d",&m);
printf("The step to move %d diskes:\n",m);
hannuota(m,'A','B','C');
while(1);
return 0;
}
/*
input the number of diskes:3
The step to move 3 diskes:
A-->C
A-->B
C-->B
A-->C
B-->A
B-->C
A-->C
*/

⑷ C语言汉诺塔问题的疑惑

亲,这不是很简单吗。一看就知道是ABC三根柱子,然后A柱上有三个盘,把A柱子上的盘套到C柱子上,另外,你这程序编的也不是很完美,我把一个更完美的HAONI塔的算法给你参考下!!!(*^__^*)
==========================================================================
#include <stdio.h>
void hanoi(int n, char A, char B, char C) {
if(n == 1) {
printf("Move sheet %d from %c to %c\n", n, A, C);
}
else {
hanoi(n-1, A, C, B);
printf("Move sheet %d from %c to %c\n", n, A, C);
hanoi(n-1, B, A, C);
}
}
int main() {
int n;
printf("请输入盘数:");
scanf("%d", &n);
hanoi(n, 'A', 'B', 'C');
return 0;
}

⑸ 汉诺塔问题c语言,哪错了

#include<stdio.h>
void fun(int n,char dish_a,char dish_b,char dish_c)
{
if(n==1)printf("%c-->%c\n",dish_a,dish_c); //问题一
else //问题二
{
fun(n-1,dish_a,dish_c,dish_b);
fun(1,dish_a,dish_b,dish_c);
fun(n-1,dish_b,dish_a,dish_c);
}
}
void main()
{
int n;
char A,B,C;
scanf("%d",&n);
{
fun(n,'A','B','C');
getchar();
}
}

⑹ c语言:求解汉诺塔问题

汉诺塔问题用递归解决比较容易,下面代码是我用C++写的,你可以参考
#include <iostream>
using namespace std;

void Move(char ch1,char ch2)
{
cout<<ch1<<"------->"<<ch2<<endl;
}
void Hannuo(int n,char PA,char PB,char PC)
{
if (n==1)
{
Move(PA,PC);
return;
}
else {
Hannuo(n-1,PA,PC,PB);
Move(PA,PC);
Hannuo(n-1,PB,PA,PC);
}
}
void main()
{ int N;
cout<<"请输入你要移动的盘子数:";
cin>>N;
Hannuo(N,'A','B','C');
}

⑺ C语言!!!汉诺塔问题

你是不理解1,2,3为啥换来换去是吗?

⑻ 汉诺塔C语言问题

我初学时,也看不懂,主要是不理解递归思想,好好看看,你按着这个算法用笔画一下每个步骤后的结果,画到最后就看出来是什么回事了。

⑼ c语言问题的汉诺塔问题

你的想法是:A-B B-C A-C A-C A-B C-B
由于小的在上A-B B-C 之后C上已经有盘子了
所以接下来的你的步骤中的A-C就不能进行了