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
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.
C bir Sözlük üzerinde yineleme için en...
Neden&; dizi yineleme için... "* o kad...
Nasıl sonuna gitmek için vim hat...
döngü numaralama üzerinde yineleme içi...
Nasıl Javascript URL gitmek için taray...