while()语句进入死循环?

while(flag){flag=a%b;a=b;b=flag;}觉得没有问题啊,看了半天是我后面的返回值有问题,谢谢各位~... while ( flag )
{
flag = a%b;
a = b;
b = flag;
}
觉得没有问题啊,看了半天
是我后面的返回值有问题,谢谢各位~
展开
 我来答
前端报错
2014-07-18 · 前端开发技术分享,分析
前端报错
采纳数:1573 获赞数:7026

向TA提问 私信TA
展开全部
我也觉得不会死循环。
上图取模运算有这么一个形式:
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;
    }
wwylele
2014-07-18 · TA获得超过2523个赞
知道小有建树答主
回答量:1037
采纳率:0%
帮助的人:1081万
展开全部
这里使用普通的数值给ab赋值后运行表示不会死循环,检查一下前面的输入语句是不是给ab输入了什么奇怪的数值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
扯扯科学的淡
2014-07-18
知道答主
回答量:13
采纳率:0%
帮助的人:4.2万
展开全部
a 和b 都没有赋值 所以会出现 ”死循环“
假如有如下定义

int a=6;b=4

第一次循环
flag=2
a=4
b=2

第二次循环
flag=0
a=2
b=0
退出循环
追问
对,
我在下面把代码贴出来了,
代码在这里确实是有问题
追答
截图不行
发代码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
青蚜虫
2014-07-18
知道答主
回答量:18
采纳率:0%
帮助的人:11.7万
展开全部
flag a b 这三个变量你怎么定义的。
追问
int a;int b;
int flag = 1;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
time棉花糖
2014-07-18 · 超过34用户采纳过TA的回答
知道答主
回答量:203
采纳率:0%
帮助的人:88.8万
展开全部
代码不全,变量类型都不明白
更多追问追答
追问
int a;int b;
int flag = 1;
追答
a,b的 初值多少
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式