c语言问题里面的while(!r)什么意思,换成while (r!=0)为什么不可以
#include<stdio.h>intgcd(intm,intn){intr;r=m%n;if(!r)returnn;elsereturngcd(n,r);}intma...
#include<stdio.h>
int gcd(int m,int n)
{
int r;
r=m%n;
if(!r)
return n;
else
return gcd(n,r);
}
int main()
{
int m,n;
do
{
scanf("%d%d",&m,&n);
}while(n<=0||m<=0);
printf("gcd=%d\n",gcd(m,n));
return 0;
}
/*#include<stdio.h>
void main()
{
int n,m,p,r,temp;
printf("inputn,m:\n");
scanf("%d%d",&n,&m);
if(n<m)
{
temp=n;
n=m;
m=temp;
}
p=n*m;
while(m!=0)
{
r=n%m;
n=m;
m=r;
}
printf("max:%d\n",n);
printf("min:%d\n",p/n);
}*/
int gcd(int m,int n)
{
int r;
r=m%n;
if(!r)
return n;
else
return gcd(n,r);
}
解释一下这段吧,谢谢 展开
int gcd(int m,int n)
{
int r;
r=m%n;
if(!r)
return n;
else
return gcd(n,r);
}
int main()
{
int m,n;
do
{
scanf("%d%d",&m,&n);
}while(n<=0||m<=0);
printf("gcd=%d\n",gcd(m,n));
return 0;
}
/*#include<stdio.h>
void main()
{
int n,m,p,r,temp;
printf("inputn,m:\n");
scanf("%d%d",&n,&m);
if(n<m)
{
temp=n;
n=m;
m=temp;
}
p=n*m;
while(m!=0)
{
r=n%m;
n=m;
m=r;
}
printf("max:%d\n",n);
printf("min:%d\n",p/n);
}*/
int gcd(int m,int n)
{
int r;
r=m%n;
if(!r)
return n;
else
return gcd(n,r);
}
解释一下这段吧,谢谢 展开
3个回答
展开全部
!r是非的意思,!=是不等于,假如r=1 那么!r是小于和等于0即为假 while(!r)是假程序不执行,r!=0是真的即为while (r!=0)真程序执行
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先问题:
while(!r)表示r=0时循环, while(r!=0)表示r非0时循环
补充问题:
这是一个递归,表示r为0了就直接返回模的除数,否则就继续除,else后面就是递归函数
这个貌似是求m和n的最大公约数的function吧
while(!r)表示r=0时循环, while(r!=0)表示r非0时循环
补充问题:
这是一个递归,表示r为0了就直接返回模的除数,否则就继续除,else后面就是递归函数
这个貌似是求m和n的最大公约数的function吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询