2012-10-27 15 views
5

Ayrıca gözden geçirdiğim diğer birkaç yayında yer alan aşağıdaki işlevde takılıyorum. Bu bağlantıda ayrıca verilmiştir. Yukarıdaki açıklamada Eloquent Javascript'in bulSequence clarification

Javascript..totally lost in this tutorial

, cevap yerine Daha sonra bir birinci 11 karşı test edilir, 1 başlangıcını, ve 11 karşı test edilir 6'ya ait bir başlangıç ​​sahip 11 bir hedef belirlemek için güvenilir

İlk iki adımı anlıyorum. Ancak, üçüncü adımdan (start: 6 ile goal: 11'i karşılaştırarak) üçüncü adımdan (start: 3 ile goal: 11'i karşılaştırarak) atlama adımını anlamıyorum.

start, 6'dan aşağı, 3'e kadar geri gider ve sonra 11'e (dördüncü mermi) kadar geri gider?

+0

İngilizce, benim ilk dilimdi. –

+0

Yayındaki bu açıklama çok kullanışlıdır, bu yüzden bunun yerine bağlantıyı sağladım. – KMcA

+1

bu cevabı kontrol edin - belki açıklayabilir. http://stackoverflow.com/questions/7540111/javascript-closure-tutorial-from-eloquent-javascript?lq=1 – c69

cevap

7

Tamam, burada kod günlük deyimleriyle geliştirilmiş kodun bir sürümüdür. izlemeyle bakarak, görsel özyineleme kavramını kavramak olacaktır umarım

function findSequence (goal) { 
    function find (start, history, depth) { 
    depth = depth || 0; 
    console.log(Array(++depth).join('--> '), start, goal, history); 
    if (start == goal) { 
     console.warn('history'); 
     return history; 
    } else if (start > goal) { 
     console.error('null'); 
     return null; 
    } else { 
     console.info('recursion!'); 
     return find(start + 5, "(" + history + " + 5)", depth) || 
      find(start * 3, "(" + history + " * 3)", depth); 
    } 
    } 
    return find(1, "1"); 
} 

console.info(findSequence(24)); 

Bu programın bir çağrı izi alacak ve: Açık Krom/Opera/Firefox eveloper araçlar var bu kodu çalıştırmak ve.

+0

Bu kavramın kavramını anlamalarına yardımcı olacağına katılıyorum, ancak yorumlarına göre onun kargaşasının' || 'olduğunu söyleyebilirim. – pedrofurla

+0

Bu tam olarak benim sorduğum soruya mükemmel bir cevap verdi. Çok teşekkür ederim. – KMcA

+1

pedrofurla, sol tarafta sonunda null döndürdüğü için yanlıştır ve başlamak için sağ tarafı tetikler. Doğru? – KMcA