00
Özyineleme fonksiyonuna örnek verir misiniz?

Özyineleme fonksiyonlarına örnek sorular ve kod çözümleri.

Özyineleme
Özyineleme fonksiyonu, bir problemi en basit parçasına ayırmak üzere kendi kendini çağıran fonksiyondur.

Bu yaklaşımda en basit parçada bulunan sonuç yukarı kısma doğru taşınır. Döngü ile çözülebilen birçok problem özyineleme ile daha kolay çözülebilir.

Aşağıda özyinelemenin kullanıldığı bazı çözüm örnekleri verilmiştir.

Örnek-1
Verilen bir sayı dizisindeki en büyük elemanı bulan getMax() fonksiyonunu özyineleme kullanarak oluşturunuz.

Dizinin ilk elemanı max1, dizinin kalan kısmının en büyük elemanı max2'dir. max1 ile max2'den büyük olanı dizinin en büyük elemanıdır. Aşağıda sözde kodu verilen getMax() fonksiyonunun tanımı içinde tekrar çağrıldığına dikkat ediniz.
 
  function getMax(array)
     {
eğer dizi bir elemanlıysa o elemanı döndür.     
max1 = array[0];
max2 = getMax(ilk elemanı hariç dizinin kalan kısmı);
max1 ile max2'den büyük olanını döndür.
     }
 
var arr1 = [10,25,40,15,55,30];
var arr2 = [4,1,5,7,8,2,3,9,6];

console.log(getMax(arr1));
console.log(getMax(arr2));

function getMax(array)
{
 var n = array.length;
 if(n == 1) return array[0];
 
 var max1 =  array[0];
 var max2 = getMax(array.slice(1,array.length));
 
 if(max1 > max2) return max1;
 else return max2;
}

Not: array.slice(1,array.length) bir dizinin ilk elemanı dışında kalan diğer bütün elemanlarını döndürür.

Örnek-2
Bir dizideki bütün sayıların toplamı, dizideki ilk eleman ile kalan bütün elemanların toplamına eşittir.

Örnek-3
Faktoriyel fonksiyonu tanımı gereği özyineleme içerir.
 
n! = n * (n-1)!
fact(n) = n * fact(n-1)

Örnek-4
Fibonacci dizisini oluşturan sayıları veren fonksiyon bir özyineleme fonksiyonudur.
 
fib(x) = fib(x-1) + fib(x-2);

Soru
Bir sayının verilen bir dizinin elemanı olup olmadığını test etmek için birinci örnekteki çözümün nasıl uygulanabileceğini de siz düşünün.
Bu alana not ekleyebilirsiniz.
Başka bir sorunuz mu var?
Yorumlar (0)

Henüz yorum yapılmamış.

İlgili Kayıtlar
İlginizi Çekebilir