Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Özyineleme(Recursion)

Benzer bir sunumlar


... konulu sunumlar: "Özyineleme(Recursion)"— 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 ( <parameter(s)> ) { if ( base case ) then return base value else return RecursiveFunction ( <expression> ) } Örnek: Faktoriyel: int factorial ( int n ) if ( n <= 1 ) return 1; return n*factorial(n-1);

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

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

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

7 Example: Factorial Factorial(4) 4 Factorial(3) 3 2

8 Example: Factorial Factorial(4) 4 Factorial(3) 3 2

9 Example: Factorial Factorial(4) 4 6

10 Example: Factorial Factorial(4) 4 6

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)
long fib ( long n ) { if ( n <= 1 ) return n ; else return fib( n - 2 ) + fib( n - 1 ); } fib(4) fib(2) fib(3) +

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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); }

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) 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; }

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: 9 16 4 15 2 5 17 1
Pivot Partition < 9 < Partition 2 1 4 5 15 16 17 Concatenate 1 2 5 15 17 5 Concatenate 1 2 4 Concatenate

49 Birleştirmeli Sıralama

50 MergeSort Örnek 1 2 3 4 5 6 7 8 2 9 4 5 3 1 6 Divide Divide 8 2 9 4 5 3 1 6 Divide 1 element 8 2 9 4 5 3 1 6 Merge 2 8 4 9 3 5 1 6 Merge 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)" indir ppt

Benzer bir sunumlar


Google Reklamları