کی میتونه بزرگتزین مقسوم علیه دو عدد رو به صورت بازگشتی محاسبه کنه؟
کی میتونه بزرگتزین مقسوم علیه دو عدد رو به صورت بازگشتی محاسبه کنه؟
من به زبان پاسکال واسه 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;
آخرین ویرایش به وسیله Developer Programmer : شنبه 30 مهر 1384 در 09:34 صبح
فکر کنم دوست عزیزمان خیلی الگوریتم را پیچیده کردن من با زبان 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 نوشتمش !!
آخرین ویرایش به وسیله Developer Programmer : دوشنبه 02 آبان 1384 در 16:48 عصر
از دوستان به خاطر راهنماییتان تشکر می کنم