08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

C ve Sistem Programcıları Derneği - C Ders Notları - Necati Ergin<br />

Aşağıda iki tamsayının ortak bölenlerinden en büyüğüne geri dönen get_gcd isimli işlev<br />

özyinelemeli olarak tanımlanıyor:<br />

int get_gcd(int a, int b)<br />

{<br />

if (a >= b && a % b == 0)<br />

return b;<br />

if (a < b)<br />

return(get_gcd(b, a));<br />

}<br />

return get_gcd(b, a % b);<br />

Aşağıda tanımlanan fibonacci isimli işlev fibonacci serisinin n. terimine geri dönüyor:<br />

int fibonacci(int n)<br />

{<br />

if (n == 1 || n == 2)<br />

return 1;<br />

}<br />

return fibonacci(n - 1) + fibonacci(n - 2);<br />

Aynı işi yapan döngüsel yapıda bir işlev çok daha verimli olurdu:<br />

int fibonacci(int n)<br />

{<br />

int x = 1;<br />

int y = 1;<br />

int k, result;<br />

}<br />

for (k = 2; k < n; ++ k) {<br />

result = x + y;<br />

x = y;<br />

y = result;<br />

}<br />

return y;<br />

Aşağıda özyinelemeli olarak tanımlanan rakam_yaz işlevi bir tamsayının her bir<br />

basamağını ekrana yazı olarak basıyor:<br />

#include <br />

void rakam_yaz(int n)<br />

{<br />

static const char *rakamlar[ ] = { "Sifir", "Bir", "Iki", "Uc", "Dort",<br />

"Bes", "Alti", "Yedi", "Sekiz", "Dokuz" };<br />

}<br />

if (n > 9)<br />

rakam_yaz(n / 10);<br />

printf("%s ", rakamlar[n % 10]);<br />

Aşağıda bir tamsayıyı ekrana onaltılık sayı sisteminde yazdıran to_hex isimli özyinelemeli<br />

bir işlev tanımlanıyor:<br />

void to_hex(int n)<br />

522

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!