«tail-call» etiketlenmiş sorular

8
Özyinelemeli bir algoritmada yığın taşması önlemek için hangi yöntemler vardır?
Soru Özyinelemeli bir algoritmadan kaynaklanan yığın taşmasını çözmenin olası yolları nelerdir? Örnek Project Euler 14 problemini çözmeye çalışıyorum ve özyinelemeli bir algoritmayla denemeye karar verdim. Ancak, program bir java.lang.StackOverflowError ile durur. Anlaşılır. Algoritma aslında yığının üzerinden geçti çünkü çok büyük bir sayı için bir Collatz dizisi oluşturmaya çalıştım. Çözümler Bu …

4
JVM, kuyruk çağrısı optimizasyonuna hangi kısıtlamaları uygular?
Clojure, kuyruk çağrısı optimizasyonunu kendi başına yapmaz: kuyruk özyinelemeli bir işleve sahip olduğunuzda ve optimize edilmesini istediğinizde, özel formu kullanmanız gerekir recur. Benzer şekilde, karşılıklı olarak iki özyinelemeli işleviniz varsa, bunları yalnızca kullanarak optimize edebilirsiniz trampoline. Scala derleyicisi özyinelemeli bir işlev için TCO'yu gerçekleştirebilir, ancak iki özyinelemeli işlev için yapamaz. …
36 scala  clojure  jvm  tail-call 

2
Y birleştirici ve kuyruk çağrı optimizasyonları
F # içindeki Y birleştiricisinin tanımı let rec y f x = f (y f) x f, ilk argüman olarak, özyinelemeli alt problemler için bir miktar devam etmeyi beklemektedir. Yf'yi bir devamı olarak kullanarak, geliştirebileceğimiz gibi f'nin birbirini izleyen çağrılara uygulanacağını görüyoruz. let y f x = f (y f) …

3
İşlev çağrısı anlambilimini temsil etmek için bir yığın kullanmanın alternatifleri nelerdir?
Hepimiz biliyoruz ve işlev çağrıları genellikle yığın kullanılarak yapılıyor; çerçeveler, dönüş adresleri, parametreler, bütün lot var. Bununla birlikte, yığın bir uygulama detayıdır: çağrı kuralları farklı şeyler yapabilir (yani x86 hızlı arama kullanır (bazı) kayıtlar, MIPS ve takipçiler kayıt pencereleri kullanır, vb.) Ve optimizasyonlar başka şeyler de yapabilir (satır içi, çerçeve …

4
TCO olmadığında, yığını üfleme konusunda ne zaman endişelenmelisiniz?
Her seferinde JVM'yi hedefleyen yeni bir programlama dili hakkında bir tartışma var, kaçınılmaz olarak insanlar şöyle şeyler söylüyor: "JVM kuyruk arama optimizasyonunu desteklemediğinden, çok sayıda patlayan yığın öngörüyorum" Bu tema üzerinde binlerce varyasyon var. Şimdi biliyorum ki, örneğin Clojure gibi bazı dillerde kullanabileceğiniz özel bir tekrar yapısı vardır. Anlamadığım şey: …
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.