qingxin111 发表于 2008-7-13 11:34

求教!!!

#include<stdio.h>
int gcd(int m,int n){
if(m==n)
                return m;
        else{
                while(1){
                        if(m>n)
                                m=m-n;
                        else if(m<n)
                                n=n-m;
                        else
                                return m;
                            break;
                }
        }
}
int main(){
        printf("%d\n",gcd(7,32));
        return 0;
}
这个怎么不能求到最大公约数,错在哪?

benyu1107 发表于 2008-7-13 12:04

把 break;去掉,试一试。。

qingxin111 发表于 2008-7-13 15:29

谢谢!!!什么原理啊???

qingxin111 发表于 2008-7-13 15:32

我发现这样也行: else{
                   return m;
                   break;
                }

benyu1107 发表于 2008-7-13 18:47

恩,也行!伱试着慢慢推就ok了
要是不加花括号break;都强行结束了……

水中无月 发表于 2008-7-13 18:57

是了。
如果有这个break;那就等于这个循环只运行一次就跳出了,当然不能达到目的啦。

benyu1107 发表于 2008-7-13 19:35

恩,也行!伱试着慢慢推就ok了
要是不加花括号break;都强行结束了……

页: [1]

编程论坛