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.

276
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...

225
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

121
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 -...

99
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...