Mozilla Türkiye Gönüllü Topluluğu Blog

C Öğreticisi 25 (Rekürsiyon (Özyineleme))


Bu yazılar https://www.tutorialspoint.com/cprogramming/ adresindeki yazı dizilerinin çevirileridir.

Özyineleme, öğeleri kendine benzer bir şekilde tekrarlama işlemidir. Programlama dillerinde, bir program aynı fonksiyon içindeki bir fonksiyonu çağırmanıza izin veriyorsa, fonksiyonun özyinelemeli çağrısı olarak adlandırılır.

	
void ozYineleme() {
ozYineleme(); /* fonksiyon kendisini cagirir */
}
int main() {
ozYineleme();
}
	

C programlama dili özyinelemeyi, yani kendini çağıracak bir fonksiyonu destekler. Ancak özyineleme kullanırken, programcıların fonksiyondan bir çıkış koşulu tanımlamaya dikkat etmeleri gerekir, aksi takdirde sonsuz bir döngüye girer.

Özyinelemeli fonksiyonlar, bir sayının faktöriyelini hesaplama, Fibonacci dizileri oluşturma, vb. gibi birçok matematiksel problemi çözmek için çok yararlıdır.

Faktöriyel

Aşağıdaki örnek verilen numaranın faktöriyelini özyinelemeli fonksiyonla hesaplar -

	
#include 
unsigned long long int faktoriyel(unsigned int i) {
if(i <= 1) {
return 1;
}
return i * faktoriyel(i — 1);
}
int main() {
int i = 12;
printf(“ %d’nin faktoriyeli = %d \n”, i, faktoriyel(i));
return 0;
}
	

Yukarıdaki kod derlenip çalıştırıldığında -

	
12’nin faktoriyeli = 479001600
	

Fibonacci Dizileri

Aşağıdaki örnek, yinelemeli bir fonksiyon kullanarak belirli bir sayı için Fibonacci dizisini oluşturur -

	
#include 
int fibonacci(int i) {
if(i == 0) {
return 0;
}
if(i == 1) {
return 1;
}
return fibonacci(i-1) + fibonacci(i-2);
}
int main() {
int i;
for (i = 0; i < 10; i++) {
printf(“%d\t\n”, fibonacci(i));
}
return 0;
}
	

Yukarıdaki kod derlenip çalıştırıldığında -

	
0
1
1
2
3
5
8
13
21
34
	
https://www.tutorialspoint.com/cprogramming/c_recursion.htm

Bir sonraki yazıya buradan ulaşabilirsiniz.