Yazılım.
CevapSitesi.com Beta!
Çözüm Noktası
Facebook, Twitter, Google+ veya e-posta ile paylaşın.
| Sorular | Makaleler | Üyeler | Etiketler  | İletişim
Soru sormak ya da cevap vermek için;
giriş yapın veya üye olun.

Sosyal medya hesaplarınızla da giriş yapabilirsiniz.

Makale Geçmişi

«« Makaleye geri dön
26.09.17 01:06
JavaScript Fonksiyonları: Fonksiyonun Kendini Çağırması (Recursion)
Bir çok programlama dilinde olduğu gibi JavaScript fonksiyonları da kendilerini çağırabilir. Ancak bu durumda yine fonksiyon içinde kendini çağırma işini bir yerde biterecek bir kontrol mekanizması kurmak zorunludur. Aksi halde fonksiyon kendini çok fazla çağırdığında bir yığın taşması hatası alırız. Ekrana gelen parametre değerlerini yazan basit bir örnek: function yaz(adet) { if (adet > 1) yaz(adet - 1); console.log(adet); } yaz(5); Çıktısı: 1 2 3 4 5 Verilen bir sayıya kadar tüm pozitif tam sayıları toplayan örnek: function ekle(sayi) { if (sayi > 1) return sayi + ekle(sayi - 1); return sayi; // Sadece 1'i döndürür. } console.log(ekle(3)); Çıktısı: 6 Fonksiyon kendi içinden kendini çağırmaktadır. Çalışması şöyle olur: elke(3)  ile fonsiyon çalıştırılır. Birinci çalıştırmada  sayi  değişkeninin değeri 3 olduğundan  if 'in altındaki  return   satırı çalıştırılır. Burada da sayıya (3'e) ekle fonksiyonu  sayi-1   ile (2 ile) çağırılarak dönen sayı eklenir. Ancak henüz dönen bir değer yoktur. Birinci çalıştırmanın fonksiyon kapsamında  sayi  değişkeninin değeri 3 olarak kalır ve fonksiyonun kendini çağırdıktan sonra dönen değeri beklenir. İkinci çalıştırmada  sayi  değişkeninin değeri 2'dir. Fonksiyonun bu defaki çağırılmasında oluşturulan fonksiyon kapsamında sayının değeri 2 olarak tutulacak ve buna fonksiyonun kendisini sayının bir eksiği ile (1 ile) çağırmasından gelecek sonuç beklenecektir. Üçüncü çalıştırmada  sayi  değişkeninin değeri 1'dir. Bu yüzden  if  sınamasından geçemez ve  if 'in altındaki satır çalıştırılmaz (Başka bahsettiğimiz kontrol mekanizması). Sonuçta bir alt satıra geçebilir ve  sayi  değişkeninin değeri (1 değeri) döndürülür. Bu noktada fonksiyonun kendi kendini çağırması tamamlanmış olur. 3. maddedeki çalıştırma kapsamına 1 değeri ile dönülür. Bu kapsamda  sayi  değişkeninin değeri 2 olduğundan  2 + Dönen Değer   yani  2 + 1 = 3  sonucu  return  ile döndürülür. 2. maddedeki çalıştırma kapsamına 3 değeri ile dönülür. Bu kapsamda  sayi  değişkeninin değeri 3 olduğundan  3 + DönenDeğer   yani  3 + 3 = 6  sonucu  return  ile döndürülür. Fonksiyon kendine başka çağrı yapmadığından program akışı  console.log  satırına gider ve sonuçta çıktıya son dönen değer yani 6 yazdırılır. Örnekteki fonksiyon tek başına şu örnekteki işi yapar: function ekle(sayi) { if (sayi > 1) return sayi + ekle1(sayi - 1); return sayi; } function ekle1(sayi) { if (sayi > 1) return sayi + ekle2(sayi - 1); return sayi; } function ekle2(sayi) { return sayi; } console.log(ekle(3)); Çıktısı: 6 Tabi bu örnek sadece 3'e kadar sayıları toplayabilir. Ancak hep aynı işlem fonksiyon ilk çağırılırken verilen parametre değeri adedince (örnekte 3) yapılacağından ve bu adet belirli bir değer olmayacağından fonksiyon başka bir fonksiyon yerine kendini çağırarak aynı işlemi farklı tekrar sayılarınca yapabilmektedir. Bu işlem bir çeşit sahte kod ile şöyle izah edebilir : function ekle(3) { if (3 > 1) return 3 + function ekle(2) { if (2 > 1) return 2 + function ekle(1) { if (1 > 1) ... // Burası 1 > 1 olmadığından çalışırılmaz. return 1; // Burası çalışır. }; return 2; // Burası çalışmaz. }; return 3; // Burası çalışmaz. } console.log(ekle(3)); JavaScript Fonksiyonları ile İlgili Makaleler: JavaScript Fonksiyonları: Temel Kullanım JavaScript Fonksiyonları: Fonksiyonun Kendini Çağırması (Recursion)  (Bu makale) JavaScript Fonksiyonları: Fonksiyon İfadeler - Function Expressions JavaScript Fonksiyonları: Kapsanımlar - Closures Javascript Fonksiyonları: Yerinde Çalıştırılan İsimsiz Fonksiyonlar JavaScript Fonksiyonları: Nesne İçinde Fonksiyon - Metotlar JavaScript Fonksiyonları: Nesne Yapılandırıcısı Olarak Fonksiyon Kullanma JavaScript Fonksiyonları: this Kullanımı JavaScript Fonksiyonlari: arguments Nesnesi JavaScript Fonksiyonları: rest Parametreleri JavaScript Fonksiyonları: Function Nesnesi JavaScript Fonksiyonları: getter ve setter Fonksiyonlar JavaScript Fonksiyonları: Arrow (ok) Fonksiyonları JavaScript Fonksiyonları: Üretici Fonksiyonlar - Generator Functions
Ekleyen: canora
Değiştiren: canora
19.01.17 01:09
JavaScript Fonksiyonları: Fonksiyonun Kendini Çağırması (Recursion)
Bir çok programlama dilinde olduğu gibi JavaScript fonksiyonları da kendilerini çağırabilir. Ancak bu durumda yine fonksiyon içinde kendini çağırma işini bir yerde biterecek bir kontrol mekanizması kurmak zorunludur. Aksi halde fonksiyon kendini çok fazla çağırdığında bir yığın taşması hatası alırız. Ekrana gelen parametre değerlerini yazan basit bir örnek: function yaz(adet) { if (adet > 1) yaz(adet - 1); console.log(adet); } yaz(5); Çıktısı: 1 2 3 4 5 Verilen bir sayıya kadar tüm pozitif tam sayıları toplayan örnek: function ekle(sayi) { if (sayi > 1) return sayi + ekle(sayi - 1); return sayi; // Sadece 1'i döndürür. } console.log(ekle(3)); Çıktısı: 6 Fonksiyon kendi içinden kendini çağırmaktadır. Çalışması şöyle olur: elke(3)  ile fonsiyon çalıştırılır. Birinci çalıştırmada  sayi  değişkeninin değeri 3 olduğundan  if 'in altındaki  return   satırı çalıştırılır. Burada da sayıya (3'e) ekle fonksiyonu  sayi-1   ile (2 ile) çağırılarak dönen sayı eklenir. Ancak henüz dönen bir değer yoktur. Birinci çalıştırmanın fonksiyon kapsamında  sayi  değişkeninin değeri 3 olarak kalır ve fonksiyonun kendini çağırdıktan sonra dönen değeri beklenir. İkinci çalıştırmada  sayi  değişkeninin değeri 2'dir. Fonksiyonun bu defaki çağırılmasında oluşturulan fonksiyon kapsamında sayının değeri 2 olarak tutulacak ve buna fonksiyonun kendisini sayının bir eksiği ile (1 ile) çağırmasından gelecek sonuç beklenecektir. Üçüncü çalıştırmada  sayi  değişkeninin değeri 1'dir. Bu yüzden  if  sınamasından geçemez ve  if 'in altındaki satır çalıştırılmaz (Başka bahsettiğimiz kontrol mekanizması). Sonuçta bir alt satıra geçebilir ve  sayi  değişkeninin değeri (1 değeri) döndürülür. Bu noktada fonksiyonun kendi kendini çağırması tamamlanmış olur. 3. maddedeki çalıştırma kapsamına 1 değeri ile dönülür. Bu kapsamda  sayi  değişkeninin değeri 2 olduğundan  2 + Dönen Değer   yani  2 + 1 = 3  sonucu  return  ile döndürülür. 2. maddedeki çalıştırma kapsamına 3 değeri ile dönülür. Bu kapsamda  sayi  değişkeninin değeri 3 olduğundan  3 + DönenDeğer   yani  3 + 3 = 6  sonucu  return  ile döndürülür. Fonksiyon kendine başka çağrı yapmadığından program akışı  console.log  satırına gider ve sonuçta çıktıya son dönen değer yani 6 yazdırılır. Örnekteki fonksiyon tek başına şu örnekteki işi yapar: function ekle(sayi) { if (sayi > 1) return sayi + ekle1(sayi - 1); return sayi; } function ekle1(sayi) { if (sayi > 1) return sayi + ekle2(sayi - 1); return sayi; } function ekle2(sayi) { return sayi; } console.log(ekle(3)); Çıktısı: 6 Tabi bu örnek sadece 3'e kadar sayıları toplayabilir. Ancak hep aynı işlem fonksiyon ilk çağırılırken verilen parametre değeri adedince (örnekte 3) yapılacağından ve bu adet belirli bir değer olmayacağından fonksiyon başka bir fonksiyon yerine kendini çağırarak aynı işlemi farklı tekrar sayılarınca yapabilmektedir. Bu işlem bir çeşit sahte kod ile şöyle izah edebilir (bu kod çalışmaz): function ekle(3) { if (3 > 1) return 3 + function ekle(2) { if (2 > 1) return 2 + function ekle(1) { if (1 > 1) ... // Burası 1 > 1 olmadığından çalışırılmaz. return 1; // Burası çalışır. }; return 2; // Burası çalışmaz. }; return 3; // Burası çalışmaz. } console.log(ekle(3)); JavaScript Fonksiyonları ile İlgili Makaleler: JavaScript Fonksiyonları: Temel Kullanım JavaScript Fonksiyonları: Fonksiyonun Kendini Çağırması (Recursion)  (Bu makale) JavaScript Fonksiyonları: Fonksiyon İfadeler - Function Expressions JavaScript Fonksiyonları: Kapsanımlar - Closures Javascript Fonksiyonları: Yerinde Çalıştırılan İsimsiz Fonksiyonlar JavaScript Fonksiyonları: Nesne İçinde Fonksiyon - Metotlar JavaScript Fonksiyonları: Nesne Yapılandırıcısı Olarak Fonksiyon Kullanma JavaScript Fonksiyonları: this Kullanımı JavaScript Fonksiyonlari: arguments Nesnesi JavaScript Fonksiyonları: rest Parametreleri JavaScript Fonksiyonları: Function Nesnesi JavaScript Fonksiyonları: getter ve setter Fonksiyonlar JavaScript Fonksiyonları: Arrow (ok) Fonksiyonları JavaScript Fonksiyonları: Üretici Fonksiyonlar - Generator Functions
Ekleyen: canora
27.06.16 00:43
JavaScript Fonksiyonları: Fonksiyonun Kendini Çağırması (Recursion)
Bir çok programlama dilinde olduğu gibi JavaScript fonksiyonları da kendilerini çağırabilir. Ancak bu durumda yine fonksiyon içinde kendini çağırma işini bir yerde biterecek bir kontrol mekanizması kurmak zorunludur. Aksi halde fonksiyon kendini çok fazla çağırdığında bir yığın taşması hatası alırız. Ekrana gelen parametre değerlerini yazan basit bir örnek: function yaz(adet) { if (adet > 1) yaz(adet - 1); console.log(adet); } yaz(5); Çıktısı: 1 2 3 4 5 Verilen bir sayıya kadar tüm pozitif tam sayıları toplayan örnek: function ekle(sayi) { if (sayi > 1) return sayi + ekle(sayi - 1); return sayi; // Sadece 1'i döndürür. } console.log(ekle(3)); Çıktısı: 6 Fonksiyon kendi içinden kendini çağırmaktadır. Çalışması şöyle olur: elke(3)  ile fonsiyon çalıştırılır. Birinci çalıştırmada  sayi  değişkeninin değeri 3 olduğundan  if 'in altındaki  return   satırı çalıştırılır. Burada da sayıya (3'e) ekle fonksiyonu  sayi-1   ile (2 ile) çağırılarak dönen sayı eklenir. Ancak henüz dönen bir değer yoktur. Birinci çalıştırmanın fonksiyon kapsamında  sayi  değişkeninin değeri 3 olarak kalır ve fonksiyonun kendini çağırdıktan sonra dönen değeri beklenir. İkinci çalıştırmada  sayi  değişkeninin değeri 2'dir. Fonksiyonun bu defaki çağırılmasında oluşturulan fonksiyon kapsamında sayının değeri 2 olarak tutulacak ve buna fonksiyonun kendisini sayının bir eksiği ile (1 ile) çağırmasından gelecek sonuç beklenecektir. Üçüncü çalıştırmada  sayi  değişkeninin değeri 1'dir. Bu yüzden  if  sınamasından geçemez ve  if 'in altındaki satır çalıştırılmaz (Başka bahsettiğimiz kontrol mekanizması). Sonuçta bir alt satıra geçebilir ve  sayi  değişkeninin değeri (1 değeri) döndürülür. Bu noktada fonksiyonun kendi kendini çağırması tamamlanmış olur. 3. maddedeki çalıştırma kapsamına 1 değeri ile dönülür. Bu kapsamda  sayi  değişkeninin değeri 2 olduğundan  2 + Dönen Değer   yani  2 + 1 = 3  sonucu  return  ile döndürülür. 2. maddedeki çalıştırma kapsamına 3 değeri ile dönülür. Bu kapsamda  sayi  değişkeninin değeri 3 olduğundan  3 + DönenDeğer   yani  3 + 3 = 6  sonucu  return  ile döndürülür. Fonksiyon kendine başka çağrı yapmadığından program akışı  console.log  satırına gider ve sonuçta çıktıya son dönen değer yani 6 yazdırılır. Örnekteki fonksiyon tek başına şu örnekteki işi yapar: function ekle(sayi) { if (sayi > 1) return sayi + ekle1(sayi - 1); return sayi; } function ekle1(sayi) { if (sayi > 1) return sayi + ekle2(sayi - 1); return sayi; } function ekle2(sayi) { return sayi; } console.log(ekle(3)); Çıktısı: 6 Tabi bu örnek sadece 3'e kadar sayıları toplayabilir. Ancak hep aynı işlem fonksiyon ilk çağırılırken verilen parametre değeri adedince (örnekte 3) yapılacağından ve bu adet belirli bir değer olmayacağından fonksiyon başka bir fonksiyon yerine kendini çağırarak aynı işlemi farklı tekrar sayılarınca yapabilmektedir. Bu işlem bir çeşit sahte kod ile şöyle izah edebilir (bu kod çalışmaz): function ekle(3) { if (3 > 1) return 3 + function ekle(2) { if (2 > 1) return 2 + function ekle(1) { if (1 > 1) ... // Burada tekrar fonksiyon çağırılabilir. Ancak 1 > 1 olmadığından çağırılmaz. return 1; }; return 2; // Burası çalışmaz. }; return 3; // Burası çalışmaz. } console.log(ekle(3)); JavaScript Fonksiyonları ile İlgili Makaleler: JavaScript Fonksiyonları: Temel Kullanım JavaScript Fonksiyonları: Fonksiyonun Kendini Çağırması (Recursion)  (Bu makale) JavaScript Fonksiyonları: Fonksiyon İfadeler - Function Expressions JavaScript Fonksiyonları: Kapsanımlar - Closures Javascript Fonksiyonları: Yerinde Çalıştırılan İsimsiz Fonksiyonlar JavaScript Fonksiyonları: Nesne İçinde Fonksiyon - Metotlar JavaScript Fonksiyonları: Nesne Yapılandırıcısı Olarak Fonksiyon Kullanma JavaScript Fonksiyonları: this Kullanımı JavaScript Fonksiyonlari: arguments Nesnesi JavaScript Fonksiyonları: rest Parametreleri JavaScript Fonksiyonları: Function Nesnesi JavaScript Fonksiyonları: getter ve setter Fonksiyonlar JavaScript Fonksiyonları: Arrow (ok) Fonksiyonları JavaScript Fonksiyonları: Üretici Fonksiyonlar - Generator Functions
Ekleyen: canora
Değiştiren: canora
19.06.16 14:30
JavaScript Fonksiyonları: Fonksiyonun Kendini Çağırması (Recursion)
Bir çok programlama dilinde olduğu gibi JavaScript fonksiyonları da kendilerini çağırabilir. Ancak bu durumda yine fonksiyon içinde kendini çağırma işini bir yerde biterecek bir kontrol mekanizması kurmak zorunludur. Aksi halde fonksiyon kendini çok fazla çağırdığında bir yığın taşması hatası alırız. Ekrana gelen parametre değerlerini yazan basit bir örnek: function yaz(adet) { if (adet > 1) yaz(adet - 1); console.log(adet); } yaz(5); Çıktısı: 1 2 3 4 5 Verilen bir sayıya kadar tüm pozitif tam sayıları toplayan örnek: function ekle(sayi) { if (sayi > 1) return sayi + ekle(sayi - 1); return sayi; // Sadece 1'i döndürür. } console.log(ekle(3)); Çıktısı: 6 Fonksiyon kendi içinden kendini çağırmaktadır. Çalışması şöyle olur: elke(3)  ile fonsiyon çalıştırılır. Birinci çalıştırmada  sayi  değişkeninin değeri 3 olduğundan  if 'in altındaki  return   satırı çalıştırılır. Burada da sayıya (3'e) ekle fonksiyonu  sayi-1   ile (2 ile) çağırılarak dönen sayı eklenir. Ancak henüz dönen bir değer yoktur. Birinci çalıştırmanın fonksiyon kapsamında  sayi  değişkeninin değeri 3 olarak kalır ve fonksiyonun kendini çağırdıktan sonra dönen değeri beklenir. İkinci çalıştırmada  sayi  değişkeninin değeri 2'dir. Fonksiyonun bu defaki çağırılmasında oluşturulan fonksiyon kapsamında sayının değeri 2 olarak tutulacak ve buna fonksiyonun kendisini sayının bir eksiği ile (1 ile) çağırmasından gelecek sonuç beklenecektir. Üçüncü çalıştırmada  sayi  değişkeninin değeri 1'dir. Bu yüzden  if  sınamasından geçemez ve  if 'in altındaki satır çalıştırılmaz (Başka bahsettiğimiz kontrol mekanizması). Sonuçta bir alt satıra geçebilir ve  sayi  değişkeninin değeri (1 değeri) döndürülür. Bu noktada fonksiyonun kendi kendini çağırması tamamlanmış olur. 3. maddedeki çalıştırma kapsamına 1 değeri ile dönülür. Bu kapsamda  sayi  değişkeninin değeri 2 olduğundan  2 + Dönen Değer   yani  2 + 1 = 3  sonucu  return  ile döndürülür. 2. maddedeki çalıştırma kapsamına 3 değeri ile dönülür. Bu kapsamda  sayi  değişkeninin değeri 3 olduğundan  3 + DönenDeğer   yani  3 + 3 = 6  sonucu  return  ile döndürülür. Fonksiyon kendine başka çağrı yapmadığından program akışı  console.log  satırına gider ve sonuçta çıktıya son dönen değer yani 6 yazdırılır. Örnekteki fonksiyon tek başına şu örnekteki işi yapar: function ekle(sayi) { if (sayi > 1) return sayi + ekle1(sayi - 1); return sayi; } function ekle1(sayi) { if (sayi > 1) return sayi + ekle2(sayi - 1); return sayi; } function ekle2(sayi) { return sayi; } console.log(ekle(3)); Çıktısı: 6 Tabi bu örnek sadece 3'e kadar sayıları toplayabilir. Ancak hep aynı işlem fonksiyon ilk çağırılırken verilen parametre değeri adedince (örnekte 3) yapılacağından ve bu adet belirli bir değer olmayacağından fonksiyon başka bir fonksiyon yerine kendini çağırarak aynı işlemi farklı tekrar sayılarınca yapabilmektedir. Bu işlem bir çeşit sahte kod ile şöyle izah edebilir (bu kod çalışmaz): function ekle(3) { if (3 > 1) return 3 + function ekle(2) { if (2 > 1) return 2 + function ekle(1) { if (1 > 1) ... // Burada tekrar fonksiyon çağırılabilir. Ancak 1 > 1 olmadığından çağırılmaz. return 1; }; return 2; // Burası çalışmaz. }; return 3; // Burası çalışmaz. } console.log(ekle(3)); JavaScript Fonksiyonları ile İlgili Makaleler: JavaScript Fonksiyonları: Temel Kullanım JavaScript Fonksiyonları: Fonksiyonun Kendini Çağırması (Recursion)  (Bu makale) JavaScript Fonksiyonları: Fonksiyon İfadeler - Function Expressions JavaScript Fonksiyonları: Kapsanımlar - Closures Javascript Fonksiyonları: Yerinde Çalıştırılan İsimsiz Fonksiyonlar JavaScript Fonksiyonları: Nesne İçinde Fonksiyon - Metotlar JavaScript Fonksiyonları: Nesne Yapılandırıcısı Olarak Fonksiyon Kullanma JavaScript Fonksiyonları: this Kullanımı JavaScript Fonksiyonlari: arguments Nesnesi JavaScript Fonksiyonları: rest Parametreleri JavaScript Fonksiyonları: Function Sınıfı JavaScript Fonksiyonları: getter ve setter Fonksiyonlar JavaScript Fonksiyonları: Arrow (ok) Fonksiyonları JavaScript Fonksiyonları: Üretici Fonksiyonlar - Generator Functions
Ekleyen: canora
Değiştiren: canora

En fazla 3 eski durum gösterilir.