C Dili Programlama Sorusu Recursive Fonksiyon Özyinelemeli Fonksiyon | Eray Kısabacak

C Dili Programlama Sorusu Recursive Fonksiyon Özyinelemeli Fonksiyon

Merhabalar arkadaşlar bugün ki sorumuz bir recursive fonksiyon  yani özyinelemeli fonksiyon olarak da bilinen bir mantık ile bir soruyu cevaplandıracağız.

Öncelikle size recursive fonksiyonlar hakkında bilgi vermek istiyorum.Mesela matematikte kullanılan bir sayının faktöriyelini almak ile size açıklayabilirim.Biliyorsunuz ki bu faktöriyel işinde bir sayı ile gidelim.Mesela 5 sayısı, bu sayının faktöriyelini alırken 5x4x3x2x1 olarak alıyoruz. Fonksiyonu yazarken öncelikle fonksiyona sayıyı gönderiyoruz ve geri döndürme ile yani return fonksiyonu kullanarak yapıyoruz.Devamında ise fonksiyonun içine sayının 1 eksiğini giriyoruz.Yani ilk önce f(5) daha sonra f(5-1) diye gidiyor.Ta ki bu işlem 1 sayısına gelene kadar 1’e geldiğinde ise direk return 1 diyoruz ve fonksiyonu bitiriyoruz ve ekrana yazdırıyoruz.

C Dili Programlama Sorusu Recursive Fonksiyon Özyinelemeli Fonksiyon | Eray Kısabacak

Sorumuz:

İkiden büyük pozitif bir tam sayı girilecek ve daha sonra a(n) = 2+4+6+8+10+…+2n sonucunun öz yinelemeli fonksiyon kullanarak hesaplayınız.

Öncelikle int a tanımlayalım bu sayıyı almak için tanımlıyoruz.Daha sonra while döngüsü ile 2’den büyük sayı girmek için bunu 2’den büyük sayı girilene kadar dönecek.Daha sonra If ile de eğer 2 den büyük ise while döngüsünü kırarak döngüden çıkmasını sağlıyoruz.

Daha sonra printf ile bir metin giriyoruz ve %d ile fonksiyonu buraya yazıyoruz ve f(a) diyoruz.

Fonksiyonu yazdıktan sonra bir önceki yerde anlattığım gibi bir mantık ile yapıyoruz.Öncelikle if kontrolü ile a sayısının 1’den küçük mü diye kontrol ediyoruz.Eğer değil ise return (2*a)+f(a-1) diyerek gidiyor.Yani 5 yazdığımızı varsayarsak f(5) oluyor. return (2*5)+f(5-1) diyor ve f(4)’e gidiyor.Daha sonra f(3) f(2) f(1) diyor ve f(0) oluyor.Daha sonra return 0 diyerek fonksiyonumuzu bitiriyoruz.Böylelikle özyinelemeli fonksiyonu kullanmış oluyoruz.

Yazdığım kodu daha detaylı incelemek için aşağıda bulabilirsiniz.Kolay Gelsin…

 

#include<stdio.h>

//Soru 1 
int f(int a){
	
	
	if(a < 1){
		return 0;
	}
	return (2*a)+f(a-1);
	
	//2+4+6

}


int main(){	

	//Soru 1
	int a;
	while(1){
		
		printf("Sayi Giriniz:");
		scanf("%d",&a);
		if(a > 2){
			break;	
		}
		
	}
	
	printf("Giriniz Sayının Sonucu :  %d\n",f(a));
	

	
}