while()语句进入死循环?
while(flag){flag=a%b;a=b;b=flag;}觉得没有问题啊,看了半天是我后面的返回值有问题,谢谢各位~...
while ( flag )
{
flag = a%b;
a = b;
b = flag;
}
觉得没有问题啊,看了半天
是我后面的返回值有问题,谢谢各位~ 展开
{
flag = a%b;
a = b;
b = flag;
}
觉得没有问题啊,看了半天
是我后面的返回值有问题,谢谢各位~ 展开
5个回答
展开全部
我也觉得不会死循环。
上图取模运算有这么一个形式:
a ÷ b = X …… flag
b ÷ flag = Y …… flag2
……
flag是取模所得,所以它一定比 b (除数)要小:flag < b
同理 flag2 < flag,
这样可得出 flag 是一直在减小,最终会小到退出 while 。
各位觉得我的推断对吗?
上图取模运算有这么一个形式:
a ÷ b = X …… flag
b ÷ flag = Y …… flag2
……
flag是取模所得,所以它一定比 b (除数)要小:flag < b
同理 flag2 < flag,
这样可得出 flag 是一直在减小,最终会小到退出 while 。
各位觉得我的推断对吗?
追问
我觉得是在while()里面的问题,他应该是把函数题里面的所有功能实现完毕在进行判定,而在下面我有一个对返回值非法的操作,是这样吗?
追答
在你的提问中没有涉及“函数”,也没有“返回值”。不清楚你说的。
我只是就这个循环的逻辑来做论断的。
看到你补充的代码,大致理解你要做的。
应该做如下修改即可:
while( true ){
flag = a % b ;
if( !flag ){
break;
}
a = b;
b = flag;
}
展开全部
这里使用普通的数值给ab赋值后运行表示不会死循环,检查一下前面的输入语句是不是给ab输入了什么奇怪的数值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a 和b 都没有赋值 所以会出现 ”死循环“
假如有如下定义
int a=6;b=4
第一次循环
flag=2
a=4
b=2
第二次循环
flag=0
a=2
b=0
退出循环
假如有如下定义
int a=6;b=4
第一次循环
flag=2
a=4
b=2
第二次循环
flag=0
a=2
b=0
退出循环
追问
对,
我在下面把代码贴出来了,
代码在这里确实是有问题
追答
截图不行
发代码
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
flag a b 这三个变量你怎么定义的。
追问
int a;int b;
int flag = 1;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
代码不全,变量类型都不明白
更多追问追答
追问
int a;int b;
int flag = 1;
追答
a,b的 初值多少
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询