SORU
1 EKİM 2008, ÇARŞAMBA


Yineleme, özyineleme gitmek için yol

Özyineleme programlama oldukça benim yıllardır çok basit sorunları çözmek için kullandım, ama bazen yineleme bellek/hız sorunları nedeniyle ihtiyacın olduğunu tam olarak farkında değilim.

Bu yüzden, bir ara Dene ve eğer varsa orada bulmaya gittim çok uzak geçmişte herhangi bir "desen" veya kitabı metin yol yineleme, özyineleme ortak bir yaklaşım dönüştürme hiçbir şey bulamadı. Ya yardımcı olur sanırım en azından bir şey.

  • Genel kurallar var mı?
  • Bir var""? desen

CEVAP
1 EKİM 2008, ÇARŞAMBA


Genellikle, normalde üzerine özyinelemeli işlevine geçirilen parametreleri yığını iterek yinelemeli bir algoritma özyinelemeli bir algoritma yerine geldim. Aslında, program yığın kendi adamlarından biri tarafından değiştirilmesi.

Stack<Object> stack;
stack.push(first_object);
while( !stack.isEmpty() ) {
   // Do something
   my_object = stack.pop();

  // Push other objects on the stack.

}

Not: birden fazla özyinelemeli çağrı içinde ve çağrıları sırasını korumak istiyorsanız, sipariş yığın: ters onları eklemek zorunda

foo(first);
foo(second);

var yerine

stack.push(second);
stack.push(first);

Edit: Stacks and Recursion Elimination (Article Backup link) bu konu hakkında daha fazla detaya gider makale.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Google Chrome

    Google Chrom

    1 EYLÜL 2008
  • JTechTalk

    JTechTalk

    11 Temmuz 2010
  • LivestrongWoman

    LivestrongWo

    1 Aralık 2011