کی میتونه بزرگتزین مقسوم علیه دو عدد رو به صورت بازگشتی محاسبه کنه؟
Printable View
کی میتونه بزرگتزین مقسوم علیه دو عدد رو به صورت بازگشتی محاسبه کنه؟
من به زبان پاسکال واسه N عدد نوشتم ... باشد که رستگار شوید!
متغیرها رو تعریف نکردم خودت چک کن
FUNCTION bmm(a,b:integer):integer;
var
r,n,m:integer
begin
a:=abs(a);
b:=abs(b);
m:=a;
n:=b;
if n>m then
begin
m:=b;
n:=a;
end;
r:=m mod n;
if r=0 then bmm:=n
else
bmm:=bmm(n,r);
end;
---
var
!!
begin
m1:=a[1];
for i:=2 to n do
m1:=bmm(m1,a[i]);
writeln(m1);
end;
فکر کنم دوست عزیزمان خیلی الگوریتم را پیچیده کردن من با زبان c می نویسم . کار اصلی که انجام می دهد روش نردبانی است که از این طریق ب.م.م بدست می آید :
#include<stdio.h>
int BMM(int a,int b){
if (a%b==0)
return b;
else
return BMM(b,a%b);
}
void main(void){
int a,b,c;
scanf("%d%d",a,b);
c=BMM(a,b);
printf("%d",c);
}
اگر این کد به دردت خورد اطلاع بده اگر نخورد باز هم بگو چرا به دردت نخورد ؟
تنها تفاوت کدتان با کد بنده در کمتر بودن تعداد متغیرها است !نقل قول:
فکر کنم دوست عزیزمان خیلی الگوریتم را پیچیده کردن
علت بهینه نبودن کدم واسه اینه که به صورت Online نوشتمش !!
از دوستان به خاطر راهنماییتان تشکر می کنم