Ö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