帮忙添几行 多一个功能 c语言

来源:百度知道 编辑:UC知道 时间:2024/06/22 21:49:13
#include <stdio.h>
void hano(int n,char a,char b,char c)
{
if(n==1)
printf("\t将%d个盘片从%c移动到%c\n",n,a,c);
else {
hano(n-1,a,c,b);
printf("\t将第%d个盘片从%c移动到%c\n",n,a,c);
hano(n-1,b,a,c);
}
}
main()
{
int n;
printf("输入将要移动多少个盘子n:");
scanf("%d",&n);
printf("递归结果:\n");
hano(n,'x','y','z');
}
在这个程序基础上,添加一个功能,输出一共需要运行多少步.
急啊!

#include <stdio.h>
#include <stdlib.h>
int N;
void hano(int n,char a,char b,char c)
{
if(n==1) {
printf("\t将%d个盘片从%c移动到%c\n",n,a,c);
N++;
}
else {
hano(n-1,a,c,b);
printf("\t将第%d个盘片从%c移动到%c\n",n,a,c);
N++;
hano(n-1,b,a,c);
}
}
int main(void)
{
int n;
printf("输入将要移动多少个盘子n:");
scanf("%d",&n);
printf("递归结果:\n");
N=0;
hano(n,'x','y','z');
printf("总共需%d步\n", N);
return 0;
}

建全局变量num

hano第一步加

num++;

最后printf(num);

一楼,二楼的都忽略了个问题,就是定义了全局变量后,没有给他付初值,就是说,二楼那个应该写成
int N=0;
不然是错的。
所以你就把二楼那个朋友的第3排的int N; 改为int N=0;就可以了

hano(n-1,a,c,b);
printf("\t将第%d个盘片从%c移动到%c\n",n,a,c);
hano(n-1,b,a,c);

第%n个盘片从a移动到c 输