Özyinelemenin kullanıldığı her yerde bir for döngüsü kullanılabilir demek doğru mu?
Evet, çünkü çoğu CPU'daki özyineleme, döngüler ve bir yığın veri yapısı ile modellenmiştir.
Ve eğer özyineleme genellikle daha yavaşsa, onu kullanmanın teknik nedeni nedir?
"Genellikle daha yavaş" değildir: yanlış uygulanan özyinelemedir ve daha yavaştır. Üstelik, modern derleyiciler bazı özyinelemeleri sormadan döngülere dönüştürmede iyidirler.
Ve bir özyinelemeyi bir for döngüsüne dönüştürmek her zaman mümkünse, bunu yapmanın pratik bir yolu var mı?
Yinelemeli açıklandığında en iyi anlaşılan algoritmalar için yinelemeli programlar yazın; En iyi özyinelemeli olarak açıklanan algoritmalar için özyinelemeli programlar yazın.
Örneğin, birçok programlama dilinde ikili ağaçların aranması, hızlı sıralama çalıştırılması ve ifadelerin ayrıştırılması genellikle yinelemeli olarak açıklanır. Bunlar en iyi özyinelemeli olarak kodlanır. Öte yandan, faktörleri hesaplamak ve Fibonacci sayılarını hesaplamak, yinelemeler açısından açıklamak çok daha kolaydır. Onlar için özyineleme kullanmak, bir balyozla sinekleri dövmek gibidir: Balyoz bunda gerçekten iyi bir iş çıkarsa bile, bu iyi bir fikir değildir + .
+ Balyoz benzetmesini Dijkstra'nın "Programlama Disiplini" nden ödünç aldım.
recursion
vsiteration
?iteration = for loop
Bence.