Pertanyaan yang diberi tag «tail-recursion»

Rekursi ekor adalah strategi rekursif di mana suatu fungsi melakukan sejumlah pekerjaan, lalu memanggil dirinya sendiri. "Ekor" mengacu pada fakta bahwa rekursi berada di bagian paling akhir dari fungsi tersebut. Banyak - terutama fungsional - kompiler bahasa pemrograman dapat mengubah jenis panggilan ini menjadi iterasi, yang berarti rekursi tail dalam bahasa yang didukung dapat digunakan tanpa takut terjadi stack overflow, berapa pun jumlah panggilannya.



19
Bagaimana cara keluar dari loop di Scala?
Bagaimana cara memutus loop? 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 } } Bagaimana cara mengubah sarang untuk loop menjadi rekursi ekor? Dari Scala Talk di …

20
Memahami rekursi [tertutup]
Seperti yang ada saat ini, pertanyaan ini tidak cocok untuk format tanya jawab kami. Kami berharap jawaban didukung oleh fakta, referensi, atau keahlian, tetapi pertanyaan ini kemungkinan akan mengundang debat, argumen, polling, atau diskusi panjang. Jika Anda merasa pertanyaan ini dapat diperbaiki dan mungkin dibuka kembali, kunjungi pusat bantuan untuk …

6
Apakah Python mengoptimalkan rekursi ekor?
Saya memiliki potongan kode berikut yang gagal dengan kesalahan berikut: RuntimeError: kedalaman rekursi maksimum terlampaui Saya mencoba untuk menulis ulang ini untuk memungkinkan optimasi rekursi ekor (TCO). Saya percaya bahwa kode ini seharusnya berhasil jika TCO terjadi. def trisum(n, csum): if n == 0: return csum else: return trisum(n - …

5
Kompiler C ++ mana, yang melakukan optimasi rekursi ekor?
Tampaknya bagi saya itu akan bekerja dengan sangat baik untuk melakukan optimasi rekursi ekor di C dan C ++, namun saat debugging saya sepertinya tidak pernah melihat frame stack yang menunjukkan optimasi ini. Itu agak bagus, karena tumpukan memberi tahu saya seberapa dalam rekursi itu. Namun, pengoptimalan juga akan menyenangkan. …

8
Bagaimana tepatnya cara kerja rekursi ekor?
Saya hampir mengerti cara kerja rekursi ekor dan perbedaan antara rekursi itu dan rekursi normal. Saya hanya tidak mengerti mengapa tidak memerlukan tumpukan untuk mengingat alamat pengirimnya. // tail recursion int fac_times (int n, int acc) { if (n == 0) return acc; else return fac_times(n - 1, acc * …


5
Apakah JVM mencegah pengoptimalan panggilan ekor?
Saya melihat kutipan ini pada pertanyaan: Apa bahasa fungsional yang baik untuk membangun layanan web? Scala khususnya tidak mendukung eliminasi panggilan ekor kecuali dalam fungsi rekursif sendiri, yang membatasi jenis komposisi yang dapat Anda lakukan (ini adalah batasan mendasar dari JVM). Apakah ini benar? Jika ya, ada apa dengan JVM …

5
Apakah Ruby melakukan Pengoptimalan Panggilan Tail?
Bahasa fungsional mengarah pada penggunaan rekursi untuk menyelesaikan banyak masalah, dan oleh karena itu banyak dari mereka melakukan Tail Call Optimization (TCO). TCO menyebabkan panggilan ke fungsi dari fungsi lain (atau fungsi itu sendiri, dalam hal ini fitur ini juga dikenal sebagai Tail Recursion Elimination, yang merupakan bagian dari TCO), …



Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.