C Programlama Dili Recursive Bölme İşlemi (Çıkartma İşlemi ile) Örneği kodunu bulabilirsiniz.
Bu kodda toplamda 4 kontrol vardır.
- Eğer payda (y) 0 girildi ise tanımsız olacağından ilk return 0 dönderiyor.
- İkinci return ise x-y == 0 şartını kontrol etmektedir. Eğer sonuç 0 ise x%y = 0 olmaktadır. Bu sonuçta değer 1 artmakta.
- Üçüncü return ise x%y!=0 zamanında son çıkarma işleminde sonuçlanacaktır ve 0 değeri dönderecektir.
- Dördüncü return ise recursive’in olduğu alan:
Bölme işlemini recursive olarak şu şekilde yapmaktayız: Örn (12/4):
12-4 = 8 (Son return işlemine girer 1 + bolmeIslemi(8,4) değeri dönderir)
8 – 4 = 4 (Son return işlemine girer 1 + bolmeIslemi 4,4) değeri dönderir)
4 – 4 = 0 (İkinci return işlemine girer ve 1 dönderir ve işlem biter)
Stack’in son durumu şu şekildedir.
bolmeIslemi(4,4) = 1 |
bolmeIslemi(8,4) = 1 + bolmeIslemi(4,4) |
bolmeIslemi(12-4) = 1 + bolmeIslemi(8,4) |
İşlem yukarıdan aşağı olarak ileryecek ve yerine koyma işlemi yaparak değeri bolmeIslemi(12-4)=3 bulacağız.
Recursive Bölme İşlemi (Çıkartma İşlemi ile) Örneği:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#include <stdio.h>
int bolmeIslemi(int x, int y);
int main() {
int sayi1 = 30;
int sayi2 = 5;
int sonuc = bolmeIslemi(sayi1, sayi2);
printf("%d / %d = %d\n", sayi1, sayi2, sonuc);
return 0;
}
int bolmeIslemi(int x, int y) {
if (y == 0)
return 0;
if (x - y == 0)
return 1;
if (x < y)
return 0;
return (1 + bolmeIslemi(x - y, y));
}
|
Çıktı:
30 / 5 = 6 |