Döngü Kullanmadan 1’den 10’a Kadar Saydırmak (Mantık Yürütmek)

Yazılım dillerinin esnekliği yazan kişinin mantığına bağlıdır.. Sadece örnek vermek için böyle bir konu yazma gereği duydum.. Ben harika bir yazılımcı değilim, ama yerinde mantık kullanabilen birisiyim.. En basit örneğinide size bu konuda göstereceğim.. Normal şartlarda 1’den 10’a kadar saydırmak istersek ne yapmamız gerekir? Bir döngü ile yapabiliriz mesela..

<?php
	for ( $i = 1; $i <= 10; $i++ ) echo $i.'<br />';
?>

Peki şimdi aynı işlemi döngü kullanmadan yapmak istersek nasıl yapacağız? Eminim daha bir çok farklı yolu vardır ancak en basit 2. farklı yolu şöyle olabilir;

<?php
	function sayi($sayi){
		echo $sayi.'<br />';
		if ( $sayi < 10 ) sayi(++$sayi);
	}
	sayi(1);
?>

Sonuç olarak her iki örnekte 1’den 10’a kadar sayacaktır.. Yani demem o ki, yapamadığınız noktalarda mantığınızı zorlayın.. Herşeyin mantıklı bir çözümü muhakkak vardır, önemli olan o çözüme nasıl ulaşabileceğinizi bilmenizdir.. Bu bir nasihat değil, sadece naçizane bir tavsiyedir 🙂

Yayınlayan

Tayfun Erbilen

2009’dan beri web işleriyle uğraşan, aynı zamanda amatör müziklede ilgilenen sıradan birisi..

“Döngü Kullanmadan 1’den 10’a Kadar Saydırmak (Mantık Yürütmek)” üzerine 9 yorum

  1. Sen söyleyince yaptım şimdi.. 100bin'e kadar saydırdığımda sonuç;
    1) Ölçüm: 0.142520904541
    2) Ölçüm: 0.191158056259

  2. Kullandığınız yönteme rekürsif (yinelemeli) fonksiyon denir.
    Google'da araştırırsanız daha çok bilgi vardır.

  3. kimse fonksiyon olarak yapmaz ama bundada olay saydırma değil mantık 🙂 bilginin zararı yoktur 😀

  4. Özyineleme yöntemi iç içe çok fazla döngü olunca ya da ne kadar döngü olacağı bilinmiyorsa çok işe yarıyor;
    Ayrıca ağaç yapısında verilerde kullanılabiliyor
    Ya da kodu daha kısa yapıyor. Örneğin Levensthein aralığını bulmak için:

    function levenshteinDistance (s, t) {
            if (!s.length) return t.length;
            if (!t.length) return s.length;
     
            return Math.min(
                    levenshteinDistance(s.substr(1), t) + 1,
                    levenshteinDistance(t.substr(1), s) + 1,
                    levenshteinDistance(s.substr(1), t.substr(1)) + (s[0] !== t[0] ? 1 : 0)
            );
    }
  5. *
    **
    ***
    ****
    bunu 10 kere yazdırıp her seferinde 1 tane ekleyerek yapmam lazım nasıl yapıcam

  6. hocam bu sekilde nasıl dönderebiliriz peki

    asdjee1
    asdjee2
    diye devam edecek yani
    örnek olarak ;

    gibi devam edecek

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir