c++写程序中一个疑惑,见注释
#include<iostream>usingnamespacestd;//汉诺塔问题voidmain(){intm;//同样输入“2”或其他数,若数据类型改为char程...
#include <iostream>
using namespace std;
//汉诺塔问题
void main()
{
int m;//同样输入“2”或其他数,若数据类型改为 char 程序就会有错误--陷入循环,为什么?
void hanoi(char n,char a,char b,char c);
cout<<"input the number of diskes:";
cin>>m;
hanoi(m,'A','B','C');
}
void hanoi(char n,char a,char b,char c)
{
void move(char x,char y);
if(n==1) move(a,c);
else
{
hanoi(n-1,a,c,b);
move(a,c);
hanoi(n-1,b,a,c);
}
}
void move(char x,char y)
{
cout<<x<<"->"<<y<<endl;
} 展开
using namespace std;
//汉诺塔问题
void main()
{
int m;//同样输入“2”或其他数,若数据类型改为 char 程序就会有错误--陷入循环,为什么?
void hanoi(char n,char a,char b,char c);
cout<<"input the number of diskes:";
cin>>m;
hanoi(m,'A','B','C');
}
void hanoi(char n,char a,char b,char c)
{
void move(char x,char y);
if(n==1) move(a,c);
else
{
hanoi(n-1,a,c,b);
move(a,c);
hanoi(n-1,b,a,c);
}
}
void move(char x,char y)
{
cout<<x<<"->"<<y<<endl;
} 展开
4个回答
展开全部
char了以后n就不可==1了也就是说if(n==1) 这步不执行,只会不停执行
hanoi(n-1,a,c,b);
move(a,c);
hanoi(n-1,b,a,c);
这步
hanoi(n-1,a,c,b);
move(a,c);
hanoi(n-1,b,a,c);
这步
追问
是因为char无法与整型比较吗
追答
char非要变成int型时 会自动转化为ASCII码
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果是int型的话 就会存2 如果是char型的话就是2的ascii码(50),而你判断的条件是n==1
1是int型,两种类型不相同。所以会循环
1是int型,两种类型不相同。所以会循环
追问
什么时候或怎么才能使char表示整型?以前一直把char当做整型,没出现过错误啊。
追答
如果让char类型的变量当做整型是不能的呀 你把你原来的贴出来看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为你的条件是递归结束条件是n==1,如果n的类型是char的话那么条件难以满足结果就会不正常循环,你试试看如果n是char,n-1会打出什么?就知道为什么了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询