«tail-recursion» etiketlenmiş sorular

Kuyruk özyineleme, bir işlevin bir miktar iş yaptığı ve ardından kendisini çağırdığı yinelemeli bir stratejidir. "Kuyruk", özyinelemenin işlevin en sonunda olduğu gerçeğini ifade eder. Pek çok - özellikle işlevsel - programlama dili derleyicileri, bu tür çağrıları yinelemeye dönüştürebilir, yani desteklenen dillerde kuyruk yineleme, çağrı sayısına bakılmaksızın yığın taşması korkusu olmadan kullanılabilir.



19
Scala'daki bir döngüden nasıl çıkabilirim?
Bir döngüyü nasıl kesebilirim? var largest=0 for(i<-999 to 1 by -1) { for (j<-i to 1 by -1) { val product=i*j if (largest>product) // I want to break out here else if(product.toString.equals(product.toString.reverse)) largest=largest max product } } Döngüler için iç içe nasıl kuyruk yinelemesine dönüştürebilirim? 22. sayfadaki FOSDEM 2009 http://www.slideshare.net/Odersky/fosdem-2009-1013261 …

20
Özyinelemeyi anlama [kapalı]
Şu anda olduğu gibi, bu soru Soru-Cevap formatımıza uygun değil. Yanıtların olgular, referanslar veya uzmanlık tarafından desteklenmesini bekliyoruz, ancak bu soru muhtemelen tartışma, tartışma, oylama veya genişletilmiş tartışma talep edecektir. Bu sorunun çözülebileceğini ve muhtemelen yeniden açılabileceğini düşünüyorsanız, yardım için yardım merkezini ziyaret edin . 7 yıl önce kapalı . …

6
Python kuyruk özyinelemesini optimize ediyor mu?
Aşağıdaki hata ile başarısız olan aşağıdaki kod parçası var: RuntimeError: maksimum yineleme derinliği aşıldı Kuyruk özyineleme optimizasyonuna (TCO) izin vermek için bunu yeniden yazmaya çalıştım. Bir TCO gerçekleşmiş olsaydı bu kodun başarılı olması gerektiğine inanıyorum. def trisum(n, csum): if n == 0: return csum else: return trisum(n - 1, csum …


8
Kuyruk özyineleme tam olarak nasıl çalışır?
Neredeyse kuyruk özyinelemesinin nasıl çalıştığını ve bununla normal özyineleme arasındaki farkı anlıyorum. Ben sadece o niye anlamıyorum gelmez onun dönüş adresini hatırlamak yığını gerektirir. // tail recursion int fac_times (int n, int acc) { if (n == 0) return acc; else return fac_times(n - 1, acc * n); } int …


5
JVM, kuyruk arama optimizasyonlarını engelliyor mu?
Şu soru üzerinde şu alıntıyı gördüm: Bir web hizmetinin üzerine inşa edilecek iyi bir işlevsel dil nedir? Özellikle Scala, yapabileceğiniz kompozisyon türlerini sınırlayan kendi kendine özyinelemeli işlevler dışında kuyruk çağrısı ortadan kaldırmayı desteklemez (bu JVM'nin temel bir sınırlamasıdır). Bu doğru mu? Eğer öyleyse, bu temel sınırlamayı yaratan JVM ile ilgili …

5
Ruby Kuyruk Çağrısı Optimizasyonu gerçekleştirir mi?
İşlevsel diller, birçok sorunu çözmek için özyinelemenin kullanılmasına yol açar ve bu nedenle çoğu, Kuyruk Çağrısı Optimizasyonu (TCO) gerçekleştirir. TCO, başka bir işlevden (veya kendisinden, bu durumda bu özellik TCO'nun bir alt kümesi olan Kuyruk Özyineleme Eliminasyonu olarak da bilinir) bir işleve yeni bir yığın çerçevesine ihtiyaç duyulmaması için o …



1
Scala Cats / fs2'de yığın güvenliği ile ilgili nedenler?
İşte fs2 belgelerinden bir parça kod . İşlev goözyinelemeli. Soru, yığının güvenli olup olmadığını nasıl bilebiliriz ve herhangi bir fonksiyonun yığın güvenli olup olmadığını nasıl anlayabiliriz? import fs2._ // import fs2._ def tk[F[_],O](n: Long): Pipe[F,O,O] = { def go(s: Stream[F,O], n: Long): Pull[F,O,Unit] = { s.pull.uncons.flatMap { case Some((hd,tl)) => …
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.