4.1 Özyineleme (Recursive) İşlevler: Kendini çağıran fonksiyonlardır.
Örnek 4.2.1: Faktoriyel hesabı
long fakt(long i)
/* fakt = i! */
{
if (i<2)
return 1;
else
return i*fakt(i-1);
}
Örneğin n=4 için fonksiyonun kendisini çağırdığı satır şöyledir:
4 * fakt(3), 3 * fakt(2), 2 * Fakt(1)
24 = 4 * 6 <-- 3 * 2 <-- 2 * 1
Örnek 4.2.2: Ortak bölenlerin en büyüğünü bulan program (Euklid yöntemi).
gcd = greatest common divisor
long gcd (long m, long n )
/* m ve n sayılarının ortak bölenlerinin en büyüğü*/
{
if (n == 0)
return m;
else
return gcd( n, m % n);
}
Örnek 4.2.3: İki sayı göreceli asal olup olmadığını veren fonksiyon (relativeli prime = gcd() = 1 )
Örnek 4.2.4: Sayının 9 un katı olup olmadığının basamak toplamlarının 9 olması ile bulunması (Özyinelemeye örnek olsun)
int kati9(long s)
{
int t;
if ( s < 10)
return ( s == 9);
else {
t = 0;
while ( s > 0) {
t = t + s % 10;
s = s / 10;
}
s = kati9(s);
}
}
|