Fungsi Rekursif
Termasuk bagian Logika & Alur dalam perjalanan Kotlin di Coddy. Pelajaran 44 dari 63.
Fungsi rekursif memanggil dirinya sendiri untuk submasalah yang lebih kecil. Kasus dasar mengembalikan nilai tanpa pemanggilan rekursif lainnya. Untuk total hitung mundur, nol adalah kasus dasar dan n - 1 bergerak mendekatinya. Rekursi biasa menggunakan ruang call stack, jadi jaga kedalaman input tetap kecil.
fun countdownSum(n: Int): Int {
if (n == 0) return 0
return n + countdownSum(n - 1)
}Di dalam main:
println(countdownSum(4))Pemanggilan fungsi menjumlahkan empat, tiga, dua, dan satu, lalu berhenti di nol.
Rekursi membutuhkan kasus dasar yang dapat dicapai dan kemajuan menuju kasus tersebut.
Tantangan
SedangLengkapi recursiveSum dengan parameter number: Int. Dengan menggunakan rekursi, kembalikan jumlah dari 1 hingga number. number berada di antara 0 dan 100. Hasil untuk nol adalah nol.
Kecuali jika batas yang lebih ketat disebutkan di atas, koleksi berisi paling banyak 100 elemen pada setiap tingkat, dan argumen bilangan bulat serta nilai koleksi bilangan bulat berada di antara -1000 dan 1000. Teks yang diberikan untuk parsing dapat berisi representasi yang tidak valid atau di luar rentang seperti yang dijelaskan.
Kembalikan nilai bertipe Int. Pertahankan kode input/output yang disediakan. Kode tersebut membaca argumen skalar, satu per baris; list dimulai dengan jumlah elemennya, lalu diikuti elemen-elemennya, dan map dimulai dengan jumlah entrinya, lalu diikuti setiap key dan value. List bertingkat mengulangi format jumlah-elemen dan elemen untuk setiap baris. main yang disediakan mencetak nilai yang dikembalikan, lalu satu karakter baris baru. List menggunakan format standar Kotlin dengan tanda kurung siku; jangan mencetak label tambahan.
Coba sendiri
fun recursiveSum(number: Int): Int {
// Tulis solusimu di sini.
return 0
}
fun main() {
val number = readln().toInt()
println(recursiveSum(number))
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika & Alur
4Koleksi Bersarang
List Berisi ListMenelusuri BarisRingkasan BarisMeratakan List BertingkatRangkuman, Baris Tempat Duduk7Alur Pemrosesan Koleksi
Transformasi dengan MapMemfilter NilaiMenguji Aturan KoleksiMengakumulasi dengan FoldRangkuman: Total yang Disetujui2Map Bagian 2
Menelusuri Entri MapKunci dan NilaiMap FrekuensiMap BersarangRingkasan: Laporan Frekuensi5Proyek: Buku Kontak
Menyimpan KontakMencari Kontak6Nilai Fungsi
Menulis LambdaTipe FungsiMeneruskan FungsiVariabel yang DitangkapRingkasan: Skor yang Dapat Diatur9Alur Kontrol Lanjutan
Klausa PengamanKeluar dari loop BerlabelMelanjutkan loop BerlabelFungsi RekursifRangkuman: Baris Valid PertamaLatihan sendiri: Playground Kotlin