Mianowicie mam program, który wyznacza największy wspólny dzielnik liczb naturalnych m i n (algorytm Euklidesa) napisany za pomocą rekurencji.
Oto on:
# include <stdio.h>
# include <conio.h>
int algorytm(int m,int n)
{
if (n==0) return(m);
else return(algorytm(n,m%n));
}
main()
{
int m,n;
printf("m:");
scanf("%d",&m);
printf("n:");
scanf("%d",&n);
printf("NWD wynosi: %d", algorytm(m,n));
getch();
}
Mam teraz pytanie... kto wytłumaczy mi co tu odpowiada za zmianę kolejności podania argumentów.
Np. podaje m: 15
n: 5
Wynik wynosi: 5
okej...
teraz podaje to samo czyli odwrotnie:
n:5
m:15
Wynik wynosi też: 5
Cała zagadka kryje się tutaj:
if (n==0) return(m);
else return(algorytm(n,m%n));
}
lub tutaj:
printf("NWD wynosi: %d", algorytm(m,n));
Jak to zmodyfikować, żeby w kodzie było dobrze widać tą zamianę?
Albo może ktoś mi napisze co w powyższym kodzie odpowiada za te zamiane?