Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Özyineleme(Recursion) Kendini doğrudan veya dolaylı olarak çağıran fonksiyonlara özyineli (recursive) fonksiyonlar adı verilir. Fonksiyonlar kendi kendilerini.

Benzer bir sunumlar


... konulu sunumlar: "Özyineleme(Recursion) Kendini doğrudan veya dolaylı olarak çağıran fonksiyonlara özyineli (recursive) fonksiyonlar adı verilir. Fonksiyonlar kendi kendilerini."— Sunum transkripti:

1 Özyineleme(Recursion) Kendini doğrudan veya dolaylı olarak çağıran fonksiyonlara özyineli (recursive) fonksiyonlar adı verilir. Fonksiyonlar kendi kendilerini çağırabilecekleri gibi (direct recursion), çağırdıkları bir fonksiyon tarafından da çağrılabilirler (indirect recursion). Özyineli algoritmalar hemgüçlü algoritmalardır, hem de karmaşık yapıları daha rahat açıklayabilirler. Iterative algoritma döngü yapısını kullanır. Özyineleme algoritması dallanma (branching) algoritmasını kullanır. Fonksiyon özyineli olarak her çağrılışında yerel değişkenler ve parametreler için bellekte yer ayrılır. Her özyinelemeli olarak tanımlanmış problemin iterative çözümüne geçiş yapılabilir.

2 Bileşenler Temel durum Rekürsif tanımlama Temel duruma indirme mekanizması

3 Tekil(Unary) Özyineleme function RecursiveFunction ( ) { if ( base case ) then return base value else return RecursiveFunction ( ) } Örnek: Faktoriyel: int factorial ( int n ) { if ( n <= 1 ) { return 1; } else { return n*factorial(n-1); }

4 Example: Factorial Factorial(4) Factorial(3)4  Factorial(2)3  Factorial(1)2  1

5 Example: Factorial Factorial(4) Factorial(3)4  Factorial(2)3  12 

6 Example: Factorial Factorial(4) Factorial(3)4  Factorial(2)3  12 

7 Example: Factorial Factorial(4) Factorial(3)4  23 

8 Example: Factorial Factorial(4) Factorial(3)4  23 

9 Example: Factorial Factorial(4) 64 

10 Example: Factorial Factorial(4) 64 

11 Example: Factorial 24

12 İkili(Binary) Özyineleme Kendi kendine iki veya daha fazla cagri vardır. Ornek – Fibonacci Bir sayilar serisi 0 ve 1 ile baslar. Sonra gelen hersayi kendinden onceki iki sayinin toplami 0, 1, 1, 2, 3, 5, 8, 13, 21,... n; eger n < = 1 f(n) f(n-1) + f(n-2); aksi halde

13 long fib ( long n ) { if ( n <= 1 ) return n ; else return fib( n - 1 ) + fib( n - 2 ); }

14 Example: Computation of fib(4) + fib(2)fib(3) fib(4) long fib ( long n ) { if ( n <= 1 ) return n ; else return fib( n - 2 ) + fib( n - 1 ); }

15 Example: Computation of fib(4) fib(2)fib(3) + fib(4) + fib(0)fib(1) long fib ( long n ) { if ( n <= 1 ) return n ; else return fib( n - 2 ) + fib( n - 1 ); }

16 Example: Computation of fib(4) fib(2)fib(3) + fib(4) + fib(0)fib(1) long fib ( long n ) { if ( n <= 1 ) return n ; else return fib( n - 2 ) + fib( n - 1 ); }

17 Example: Computation of fib(4) fib(2)fib(3) + fib(4) + 0fib(1) long fib ( long n ) { if ( n <= 1 ) return n ; else return fib( n - 2 ) + fib( n - 1 ); }

18 Example: Computation of fib(4) fib(2)fib(3) + fib(4) + fib(1)0 long fib ( long n ) { if ( n <= 1 ) return n ; else return fib( n - 2 ) + fib( n - 1 ); }

19 Example: Computation of fib(4) fib(2)fib(3) + fib(4) + fib(1)0 long fib ( long n ) { if ( n <= 1 ) return n ; else return fib( n - 2 ) + fib( n - 1 ); }

20 Example: Computation of fib(4) fib(2)fib(3) + fib(4) + 10 long fib ( long n ) { if ( n <= 1 ) return n ; else return fib( n - 2 ) + fib( n - 1 ); }

21 Example: Computation of fib(4) fib(2)fib(3) + fib(4) + 01 long fib ( long n ) { if ( n <= 1 ) return n ; else return fib( n - 2 ) + fib( n - 1 ); }

22 Example: Computation of fib(4) 1fib(3) + fib(4) + 01 long fib ( long n ) { if ( n <= 1 ) return n ; else return fib( n - 2 ) + fib( n - 1 ); }

23 Example: Computation of fib(4) + fib(3) fib(4) long fib ( long n ) { if ( n <= 1 ) return n ; else return fib( n - 2 ) + fib( n - 1 ); }

24 Example: Computation of fib(4) + fib(3) fib(4) fib(1)fib(2) long fib ( long n ) { if ( n <= 1 ) return n ; else return fib( n - 2 ) + fib( n - 1 ); }

25 Example: Computation of fib(4) + fib(3) fib(4) fib(1)fib(2) long fib ( long n ) { if ( n <= 1 ) return n ; else return fib( n - 2 ) + fib( n - 1 ); }

26 Example: Computation of fib(4) + fib(3) fib(4) fib(2) long fib ( long n ) { if ( n <= 1 ) return n ; else return fib( n - 2 ) + fib( n - 1 ); }

27 Example: Computation of fib(4) + fib(3) fib(4) fib(2) long fib ( long n ) { if ( n <= 1 ) return n ; else return fib( n - 2 ) + fib( n - 1 ); }

28 Example: Computation of fib(4) + fib(3) fib(4) fib(2) + fib(0)fib(1) long fib ( long n ) { if ( n <= 1 ) return n ; else return fib( n - 2 ) + fib( n - 1 ); }

29 Example: Computation of fib(4) + fib(3) fib(4) fib(2) + fib(0)fib(1) long fib ( long n ) { if ( n <= 1 ) return n ; else return fib( n - 2 ) + fib( n - 1 ); }

30 Example: Computation of fib(4) + fib(3) fib(4) fib(2) + 0 fib(1) long fib ( long n ) { if ( n <= 1 ) return n ; else return fib( n - 2 ) + fib( n - 1 ); }

31 Example: Computation of fib(4) + fib(3) fib(4) fib(2) + 0 fib(1) long fib ( long n ) { if ( n <= 1 ) return n ; else return fib( n - 2 ) + fib( n - 1 ); }

32 Example: Computation of fib(4) + fib(3) fib(4) fib(2) + 0fib(1) long fib ( long n ) { if ( n <= 1 ) return n ; else return fib( n - 2 ) + fib( n - 1 ); }

33 Example: Computation of fib(4) + fib(3) fib(4) fib(2) + 01 long fib ( long n ) { if ( n <= 1 ) return n ; else return fib( n - 2 ) + fib( n - 1 ); }

34 Example: Computation of fib(4) + fib(3) fib(4) fib(2) + 01 long fib ( long n ) { if ( n <= 1 ) return n ; else return fib( n - 2 ) + fib( n - 1 ); }

35 Example: Computation of fib(4) + fib(3) fib(4) long fib ( long n ) { if ( n <= 1 ) return n ; else return fib( n - 2 ) + fib( n - 1 ); }

36 Example: Computation of fib(4) + fib(3) fib(4) long fib ( long n ) { if ( n <= 1 ) return n ; else return fib( n - 2 ) + fib( n - 1 ); }

37 Example: Computation of fib(4) + 2 fib(4) long fib ( long n ) { if ( n <= 1 ) return n ; else return fib( n - 2 ) + fib( n - 1 ); }

38 Example: Computation of fib(4) + 2 fib(4) long fib ( long n ) { if ( n <= 1 ) return n ; else return fib( n - 2 ) + fib( n - 1 ); }

39 Example: Computation of fib(4) long fib ( long n ) { if ( n <= 1 ) return n ; else return fib( n - 2 ) + fib( n - 1 ); }

40 Example: Computation of fib(4) Thus, fib(4) returns the value 3.

41 Tail yineleme: Yineleme çağrısı metodun en sonunda yapılır. public int recFact(int n) { if (n<=1) return 1; else return n * recFact(n-1); } public void tail() { ….. tail(); }

42 Nontail yineleme Yineleme çağrısından sonra başka işlemler yapılır (yazdırma v.b.). public int nontail(int n) { if (n > 0) { ……. nontail(n-1); Console.WriteLine(n); ……. nontail(n-1); }

43 Dolaylı (Indirect) yineleme Yineleme çağrısı başka bir fonksiyonun içinden yapılır. void A(int n) { if (n <= 0) return 1; n- -; B(n); } void B(int n) { if (n <= 0) return 1; n- -; A(n); }

44 İçiçe (Nested) yineleme Yineleme çağrısı içindende yineleme çağrısı yapılır. public int A(int n, int m) { if (n <= 0) return 1; return A(n-1, A(n-1, m-1)); }

45 İkili Arama binarysearch(int a[],int n,int low,int high) { int mid; if (low > high) return -1; mid = (low + high)/2; if(n == a[mid]) { printf("The element is at position %d\n",mid+1); return 0; } if(n < a[mid]) { high = mid - 1; binarysearch(a,n,low,high); } if(n > a[mid]) { low = mid + 1; binarysearch(a,n,low,high); } }

46 Bağlı Liste Tersten Yazdırma void print(Elem *list) { if (list != NULL) {print(list->next); cout>>list->bilgi; }

47 Hızlı Sıralama

48 Quicksort örnek Sort the array containing: Partition < < Pivot 9 Partition Concatenate Concatenate Concatenate

49 Birleştirmeli Sıralama

50 MergeSort Örnek Divide 1 element Merge Sorted Array

51 Hanoi Kulesi Üç kule (A,B,C) olan bir sistemde yarıçapı birbirinden farklı 4 tane diskin A kulesine yerleştirilir. Kurallar : Bir diskin altında yarıçapı daha küçük bir disk bulunamaz. Bir diskin üzerine yarıçapı daha büyük bir disk yerleştirilemez. Bir anda bir kulenin sadece en üstündeki disk diğer bir kuleye yerleştirilebilir. Bir anda bir disk hareket ettirilebilir. Problemde istenen : B direğinden de yararlanarak tüm disklerin C’ye yerleştirilmesi.


"Özyineleme(Recursion) Kendini doğrudan veya dolaylı olarak çağıran fonksiyonlara özyineli (recursive) fonksiyonlar adı verilir. Fonksiyonlar kendi kendilerini." indir ppt

Benzer bir sunumlar


Google Reklamları