Özyineleme {\} /\ Suhap SAHIN Onur GÖK

Benzer belgeler
Özyineleme (Recursion)

Eln 1002 Bilgisayar Programlama II

Yigin & Kuyruk {\} /\ Suhap SAHIN Onur GÖK

ÖZYİNELEME RECURSION. Yrd. Doç. Dr. Aybars UĞUR

ALGORİTMA ANALİZİ. Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü

ÖZYİNELEME RECURSION. Doç. Dr. Aybars UĞUR

AVL Agacı {\} /\ Suhap SAHIN Onur GÖK

BLM 112- Programlama Dilleri II. Hafta 2 C Programlarının Bellek Düzeni ve Rekürsif (Özyinelemeli) Fonksiyonlar

2) /* Kullanıcıdan alınan iki sayının obebini alt fonksiyon yardımı ile hesaplayan C programı*/

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#3: ALGORİTMA ANALİZİ#2

Deney 7: Fonksiyon Tanımlama ve Parametre Aktarım Yöntemleri

Fonksiyonlar. Yrd.Doç.Dr.Bülent Çobanoğlu

7. FONKSİYONLAR. Dönüş_Tipi Fonksiyon_Adı (tip giriş_parametreleri);

Bölüm 10. Altprogramları Uygulamak

C dilinde if-else yapısı

Bil Hafta Çalışma Soruları (Yanıtlar)

Giris {\} /\ Suhap SAHIN Onur GÖK

Arasınav Sınavı Soruları Güz 2017 Süre: 90 Dakika

int main(void) { int num = 0; int input = 1; int retval = 0; struct NODE *nodepointer; nodepointer = (struct NODE *)malloc(sizeof(struct NODE));

{\} /\ Suhap SAHIN Onur GÖK

#include<stdio.h> #include<conio.h> #define doktorsayisi 3. typedef struct dr{ int ay1, ay2, ay3, ay4; } doktor; float hesapla(doktor dktr){

Adı Soyadı : Öğrenci No :

Final Sınavı Soruları Bahar 2018

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı

Operatörlere İşlev Yükleme

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-1 Kapsama Kuralları & Rasgele Sayı Üretimi & Rekürsif (Özyinelemeli) Fonksiyonlar

Başkent Üniversitesi MühendislikFakültesi BaharYarıyılı YerSıra No BİL 101 Bilgisayar Yazılımı-I Dersi Dönem Sonu MAZERET Sınavı

Strings(Karakter Dizisi)

MAK 1005 Bilgisayar Programlamaya Giriş. Fonksiyonlar. Prof. Dr. Necmettin Kaya

Klavyeden girilen metnin karakter uzunluğu bulan C programı. Klavyeden girilen metin içerisindeki küçük ve büyük harf sayısını bulan C programı

Programlama Dilleri 1. Ders 5: Göstericiler

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 7. Bölüm Metot Tanımlama ve Kullanma

Algoritma ve Programlama II Recursive Fonksiyonlar Dosyalama

Algoritma Analizi Big O

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu DİZİLER

Arasınav Soruları Bahar 2018

Kocaeli Üniversitesi C Bilgisayar Programlama Ara Sınavı Test Soruları

Hafta 11 Çok Boyutlu Diziler

ÇOK BOYUTLU DİZİLER VE DİNAMİK BELLEK YÖNETİMİ İLE İLGİLİ ÖRNEKLER

Yrd. Doç. Dr. Caner ÖZCAN

Final Sınavı Soruları Güz, Süre: 90 Dakika

ÖZYİNELEME (RECURSION)

4.Hafta BİL Soruların Çözümleri

KOCAELİ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ. BİLGİSAYAR LABORATUVARI II FİNAL SINAVI SORU ve CEVAPLARI(I. ogr)

Nesne İşaretçileri. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. Sınıf Yapısı. Kalıtım Çok Şekillilik

ELN1001 BİLGİSAYAR PROGRAMLAMA I

ÖZYİNELEME (RECURSION)

C PROGRAMLAMA D İ L İ

Sınav Dağılım & IMKB Endeks

Bölüm 10. Altprogramların gerçeklenmesi ISBN

YMT219 VERİ YAPILARI ÖDEV-1

Bölüm 5. Ağaç. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 73

Bölüm 3 Yapısal Programlama

Döngü komutları komutların bir çok kez yeniden yürülmesini. sağlayan, programlamada kullandığımız önemli yapılardan biridir.

Ağaçlar (Trees) Ağaçlar (Trees)

mod ile açılacak olan dosyanın ne amaçla açılacağı belirlenir. Bunlar:

Programlama Dilleri Laboratuvarı

YIĞINLAR YIĞINLAR. Yığın İşlemleri Postfix, Prefix, Infix. G. Ü. Bilgisayar Mühendisliği Bölümü

Eln 1001 Bilgisayar Programlama I

Diziler (Arrays) Çok Boyutlu Diziler

Örneğin iki sayının toplamının hesaplayacak bir fonksiyon şöyle tanımlanabilir:

/* Çember alanını hesaplar */

Bölüm 8. Ayrık Küme. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 16

/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

Arasınav Örnek Soruları Bahar 2018

C ile Uygulamalar 3 - Cevaplar

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

Alıştırma 1: Yineleme

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-10 Diziler. Yrd. Doç. Dr. Ümit ATİLA

BLM 111 ALGORİTMA VE PROGRAMLAMA I

Sınav tarihi : Süre : 60 dak.

Sınav tarihi : Süre : 60 dak. c) En başta #include<stdio.h> yazılmamıştır. c) zt d) Pi e) X0

Yrd. Doç. Dr. Caner ÖZCAN

BLM111 Programlama Dilleri I. Hafta 10 Diziler. Yrd. Doç. Dr. Caner ÖZCAN

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

INTEGER OVERFLOW ***************************************************************/

ESM-361 Mikroişlemciler. 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN

Koşul doğru olduğu sürece istenilen işlem/işlemlerin tekrarlanmasını sağlayan yapıdır.

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

SOMEBODY ELSE'S. ( DATA STRUCTURES and ALGORITHMS ) Veri Yapıları ve Algoritmaları

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

Ders 4: Temel Giriş/Çıkış Fonksiyonları

Algoritma ve Programlama: Karar Yapıları ve Döngüler

Final Sınavı Örnek Soruları Bahar 2018

#include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct { int ID; char isim[15]; char soyisim[15];

Bilgisayar programlama III Fonksiyonlar

Hazır Fonksiyonlar {\} /\ Suhap SAHIN Onur GÖK 1

Temel Bilgisayar Bilimleri Ders Notu #4-1. kısım

Adı Soyadı : Öğrenci No :

Stack Islemleri. Postfix ve Infix notasyonlari. Stack ozellikleri

Bölüm 6. Karma. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 31

Binary Search. (Yarılama) Bölüm Dizide Bir Öğe Arama

Final Sınavı Örnek Soruları Güz 2018 Süre: 90 Dakika

Telefon Rehberi Uygulaması

Döngü ve Koşul Deyimleri

Linux Assembly Programlamaya Giriş

Python ile Programlamaya Giriş DERS 9: FONKSİYONLAR DR. HÜSEYİN BAHTİYAR

Adım Adım C-II. Eksik kalmış konular

Transkript:

Özyineleme 0 {\ /\ Suhap SAHIN Onur GÖK

Özyineleme Tavugu yakala Tavugu yakala Tavugu yakala Tavugu yakala Ben yakalarım

Özyineleme Kaç kisiyiz Ben ve sonraki Ben ve sonraki Ben ve sonraki Sadece ben

Özyineleme

Tower of Hanoi Uygulamalar

Tree traversals Uygulamalar

Özellikler int function(int sayi) { if(sayi < 1) return; function(sayi - 1); printf("%d",sayi); temel durum ilerleme durumu

Bellek Kullanımı f(n) f(n-1) f(n-2) f(n-2) f(n-1) f(n)

Bellek Kullanımı #include<stdio.h> void yaz(int test) { if (test < 1) return; else { printf("%d ",test); yaz(test-1); printf("%d ",test); return; int main() { int test = 3; yaz(test);

Bellek Kullanımı #include<stdio.h> void yaz(int test) { if (test < 1) return; else { printf("%d ",test); yaz(test-1); printf("%d ",test); return; int main() { int test = 3; yaz(test); yaz(3) print 3 yaz(2) print 3 yaz(2) print 2 yaz(1) print 2 yaz(1) print 1 yaz(0) print 1 yaz(0) test < 1

Bellek Kullanımı yaz(-1) yaz(3) int fact(int n) { if (n == 100) return 1; else return n*fact(n-1); 3*yaz(2) yaz(2) 2*yaz(1) yaz(1) 1*yaz(0) yaz(0) yaz(1) stack overflow yaz(2) yaz(3)

Recursive Vs iteratif Yer yaz(1) yaz(2) yaz(3)

Recursive Vs iteratif yaz(3) print 3 Zaman yaz(2) print 3 yaz(2) print 2 yaz(1) print 2 yaz(1) print 1 yaz(0) print 1

Recursive Vs iteratif Uygulama

Dogrudan Özyineleme function(3) function(2) function(2) print 3 function(1) function(1) int function(int sayi) { print 2 function(0) function(0) if(sayi < 0) return; print 1 0 < 0 function(sayi - 1); printf("%d",sayi);

Dolaylı Özyineleme int function(int sayi) { if(sayi < 0) return; function1(sayi - 1); printf("%d ",sayi); function(sayi) function1(sayi-1) print sayi int function1(int sayi) { if(sayi < 0) return; function2(sayi - 1); printf("%d ",sayi); int function2(int sayi) { if(sayi < 0) return; function(sayi - 1); printf("%d ",sayi);

Dolaylı Özyineleme int function(int sayi) { if(sayi < 0) return; function1(sayi - 1); printf("%d ",sayi); int function1(int sayi) { if(sayi < 0) return; function2(sayi - 1); printf("%d ",sayi); function(sayi) function1(sayi-1) print sayi function1(sayi-1) function2(sayi-2) print sayi-1 int function2(int sayi) { if(sayi < 0) return; function(sayi - 1); printf("%d ",sayi);

Dolaylı Özyineleme int function(int sayi) { if(sayi < 0) return; function1(sayi - 1); printf("%d ",sayi); int function1(int sayi) { if(sayi < 0) return; function2(sayi - 1); printf("%d ",sayi); function(sayi) function1(sayi-1) print sayi function1(sayi-1) function2(sayi-2) print sayi-1 function( ) function2(sayi-2) function(sayi-3) print sayi-2 int function2(int sayi) { if(sayi < 0) return; function(sayi - 1); printf("%d ",sayi); function1(sayi-4) print sayi function1( ) function2(sayi-5) print sayi-1 function2( ) function(sayi-6) print sayi-2

Tekil Özyineleme #include<stdio.h> int factorial( int n ){ if ( n <= 1 ){ return 1; else{ return n*factorial(n-1); factorial(n) n*factorial(n-1) int main(){ printf("%d",factorial(4));

Tekil Özyineleme #include<stdio.h> int factorial( int n ){ if ( n <= 1 ){ return 1; else{ return n*factorial(n-1); factorial(n) n*factorial(n-1) function(n-1) (n-1)*factorial(n-2) function(n-2) (n-2)*factorial(n-3) int main(){ printf("%d",factorial(4));

Faktöriyel factorial(4) 4 factorial(3) 3 factorial(2) 2 factorial(1) 1

Faktöriyel factorial(4) 4 factorial(3) 3 factorial(2) 2 factorial(1) 1

Faktöriyel factorial(4) 4 factorial(3) 3 factorial(2) 2 factorial(1) 1

Faktöriyel factorial(4) 4 factorial(3) 3 factorial(2) 2 1

Faktöriyel factorial(4) 4 factorial(3) 3 2

Faktöriyel factorial(4) 4 factorial(3) 3 2

Faktöriyel 4 factorial(4) 6

Faktöriyel 4 factorial(4) 6

24 Faktöriyel

Kaç Kisiyiz #include<stdio.h> int kackisi( int n ){ if ( n <= 1 ){ printf("sadece ben"); return 1; else{ printf("ben ve sonraki, "); kackisi(n-1); return 1; Kaç kisiyiz int main() { kackisi(3);

Kaç Kisiyiz #include<stdio.h> int kackisi( int n ){ if ( n <= 1 ){ printf("sadece ben"); return 1; else{ printf("ben ve sonraki, "); kackisi(n-1); return 1; Kaç kisiyiz Ben ve sonraki Ben ve sonraki Sadece ben int main() { kackisi(3);

ikili Özyineleme Fibonacci Sayıları

ikili Özyineleme #include<stdio.h> int fib(int n){ if (n <= 1) return n; return fib(n-1) fib(n-2); int main (){ int n = 4; printf("%d", fib(n)); getchar(); return 0; Fibonacci Dizisi 0, 1, 1, 2, 3, 5, 8, 13, 21,... { n; eger n < = 1 f(n) f(n-1) f(n-2); aksi halde

ikili Özyineleme #include<stdio.h> int fib(int n){ if (n <= 1) return n; return fib(n-1) fib(n-2); int main (){ int n = 4; printf("%d", fib(n)); getchar(); return 0; Fibonacci Dizisi 0, 1, 1, 2, 3, 5, 8, 13, 21,... { n; eger n < = 1 f(n) f(n-1) f(n-2); aksi halde

ikili Özyineleme fib(4) fib(2) fib(3)

ikili Özyineleme fib(4) fib(2) fib(3) fib(0) fib(1)

ikili Özyineleme fib(4) fib(2) fib(3) fib(0) fib(1)

ikili Özyineleme fib(4) fib(2) 0 fib(1) fib(3)

ikili Özyineleme fib(4) fib(2) 0 fib(1) fib(3)

ikili Özyineleme fib(4) fib(2) 0 fib(1) fib(3)

ikili Özyineleme fib(4) fib(2) 0 1 fib(3)

ikili Özyineleme fib(4) fib(2) 0 1 fib(3)

ikili Özyineleme fib(4) 1 0 1 fib(3)

ikili Özyineleme fib(4) 1 0 1 fib(3)

ikili Özyineleme fib(4) 1 fib(3) 0 1 fib(1) fib(2)

ikili Özyineleme fib(4) 1 fib(3) 0 1 fib(1) fib(2)

ikili Özyineleme fib(4) 1 fib(3) 0 1 1 fib(2)

ikili Özyineleme fib(4) 1 fib(3) 0 1 1 fib(2)

ikili Özyineleme fib(4) 1 0 1 fib(3) 1 fib(2) fib(0) fib(1)

ikili Özyineleme fib(4) 1 0 1 fib(3) 1 fib(2) fib(0) fib(1)

ikili Özyineleme fib(4) 1 0 1 fib(3) 1 fib(2) 0 fib(1)

ikili Özyineleme fib(4) 1 0 1 fib(3) 1 fib(2) 0 fib(1)

ikili Özyineleme fib(4) 1 0 1 fib(3) 1 fib(2) 0 fib(1)

ikili Özyineleme fib(4) 1 0 1 fib(3) 1 fib(2) 0 1

ikili Özyineleme fib(4) 1 0 1 fib(3) 1 fib(2) 0 1

ikili Özyineleme fib(4) 1 0 1 fib(3) 1 1 0 1

ikili Özyineleme fib(4) 1 0 1 fib(3) 1 1 0 1

ikili Özyineleme fib(4) 1 0 1 2 1 1 0 1

ikili Özyineleme fib(4) 1 0 1 2 1 1 0 1

ikili Özyineleme 3 1 0 1 2 1 1 0 1

ikili Özyineleme 3 1 0 1 2 1 1 0 1

Kuyruk Özyineleme #include<stdio.h> void kuyruk(int n){ if (n < 1) return; else{ printf(" %d\n",n); kuyruk(n-1); return; int main(){ int n = 2; kuyruk(n); kuyruk(2) print 2 kuyruk(1) kuyruk(1) print (1) kuyruk(0) kuyruk(0) 0 < 1

Kuyruk Olmadan #include<stdio.h> void kuyruk(int n){ if (n < 1) return; else{ kuyruk(n-1); printf(" %d\n",n); return; int main(){ int n = 2; kuyruk(n); Özyineleme kuyruk(2) kuyruk(1) kuyruk(1) kuyruk(0) print 1 print (1) kuyruk(0) 0 < 1

içiçe Özyineleme public int A(int n, int m) { if (n <= 0) return 1; return A(n-1, A(n-1, m-1));

Sorular