【发布时间】:2013-08-14 01:36:14
【问题描述】:
计算两个数字的 GCD 的程序。
#include<stdio.h>
#include<conio.h>
int findgcd(int x,int y)
{
while(x!=y)
{
if(x>y)
{
return findgcd(x-y,y);
}
else
{
return findgcd(x,y-x);
}
}
return x;
}
void main()
{
int n1,n2,gcd;
clrscr();
printf("\n GCD Calculator [ Please Enter Positive Integer number. ]\n");
printf("\nEnter 1st numbers: ");
scanf("%d",&n1);
printf("\nEnter 2nd numbers: ");
scanf("%d",&n2);
if(n1>0 && n2>0)
{
gcd=findgcd(n1,n2);
printf("\nGCD of %d and %d is: %d ",n1,n2,gcd);
}
else
{
printf("\n Sorry, Wrong Input.");
}
getch();
}
有没有另一种方法可以在 C 中使用递归计算两个数字的 GCD。
或者,如果没有递归,我如何以简单的方式编写这个程序?
【问题讨论】:
-
是什么让你认为
findgcd()返回两个值? -
"要了解递归,您需要了解递归..."
-
替换告诉你使用
void main()的书;它的作者不太了解这种语言。int main(void)是正确的。 -
虽然我觉得downvotes很难判断,但我不明白的是upvotes ...
-
@KeithThompson 我的错。法语是我的母语 :) 我编辑了