PROGRAMLAMA II
2.Hafta
Matematikte Rekürsif Fonksiyonlar
F(x)= 2x +a şeklindeki bir fonksiyon ön izlemeli olmayan normal bir yaklaşımdır. Ön izlemeli olması için ifadenin
çarpan katı fonksiyonun bir eksiği ile toplanması ile oluşur. o halde fonksiyonumuz f(x)=f(x-1)+2 şeklinde olacaktır. Bu
iç içe fonksiyon olarak tanımlanır. Ayrıca bir durum daha vardır f(0) olduğunda ifadenin eşitliği her zaman sabit sayı
değerini alıcaktır. F(0)=a
Rekürsif algoritmalar ile ilgili verilecek son örneğimiz fibonacci sayılarıdır. Fibonacci sayıları, matematikte
tanımlanmış olan ve pek çok uygulamada ismi geçen özel sayılardır. Fibonacci sayılarının tanımlaması şu şekildedir:
F(n) = F(n‐1) + F(n‐2)
F(n‐1) = F(n‐2) + F(n‐3)
F(3) = F(2) + F(1)
Örnek.1: Rekürsif fonksiyonlar ile faktöriyeli alma programı yapımı.
#include <stdio.h>
#include <conio.h>
int faktoriyel(int sayi)
{ if(sayi<2) return(1); else return(sayi*faktoriyel(sayi-1)); }
main() { int sayi; int sonuc;
printf("Faktoriyelini almak istediginiz sayiyi girin...\n");
scanf("%d",&sayi);
if(sayi<0) { printf("Negatif sayilarin faktoriyeli alinamaz...\n"); }
else { sonuc = faktoriyel(sayi);
printf("%d sayisinin faktoriyeli = %d'dir\n", sayi, sonuc);
getch(); } }
1
PROGRAMLAMA II
Örnek.2: Girilen sayının üssünü alma programı yapımı.
#include <stdio.h>
#include <conio.h>
int us_al(int taban, int us)
{ if(us==0)
return(1);
else
return(taban*us_al(taban, us-1));
}
int us_al(int taban, int us);
main()
{ int taban, us;
printf("Sirasiyla us islemini yapmak istediginiz taban ve us degerlerini girin...\n");
scanf("%d",&us);
scanf("%d",&taban);
if(taban ==0)
printf("Taban degeri 0 iken us alma islemi gerceklestirilemez...\n");
else if(us<0)
printf("Negatif us degerleri icin us alma islemi gerceklestirilemez...\n");
else
printf("%d uzeri %d = %d'dir...\n",taban, us, us_al(taban, us));
getch(); }
2
Download

3. Hafta Konu Özetleri