Pengulangan

Rekursi adalah salah satu hal yang sulit diterima oleh pikiran saya. Apa maksudmu suatu fungsi dapat memanggil dirinya sendiri? Apa? Pikiran meledak! Rekursi dalam ilmu komputer didefinisikan sebagai berikut dari wikipedia.

'rekursi adalah metode pemecahan masalah di mana solusinya tergantung pada solusi untuk contoh yang lebih kecil dari masalah yang sama. Masalah seperti itu umumnya dapat diselesaikan dengan iterasi, tetapi ini perlu mengidentifikasi dan mengindeks instance yang lebih kecil pada waktu pemrograman. Rekursi memecahkan masalah rekursif tersebut dengan menggunakan fungsi yang memanggil dirinya sendiri dari dalam kode mereka sendiri.'

Rekursi adalah salah satu ide sentral dari ilmu komputer tetapi terlebih lagi dalam algoritma. Pada artikel ini saya akan berbicara tentang rekursi yang berkaitan dengan algoritma. Biasanya ada dua cara untuk menyelesaikan algoritma, iteratif atau rekursif. Rekursi digunakan dalam algoritma traversal Dom, traversal Object/Hash, Depth-first search traversal (DFS), Breadth-first search traversal (BFS), dll.

Tumpukan panggilan:

Foto oleh Brigitte Tohm di Unsplash

Rekursi menggunakan apa yang dikenal sebagai tumpukan panggilan. Ketika suatu fungsi memanggil dirinya sendiri, ia masuk ke dalam tumpukan, dan ketika rekursi mengenai kasus dasar, ia keluar dari tumpukan satu per satu. Stack adalah struktur data yang menggunakan first in, last out (LIFO). Ini mirip dengan piring susun, saat mengeluarkannya Anda harus mengambilnya dari atas.

Kasus dasar:

Satu hal yang menakutkan jika Anda belum pernah mengalaminya adalah memasuki infinite loop dan tidak tahu cara menutupnya. Hal menakutkan lain yang terkait dengan itu adalah stack overflow. Apa yang terjadi adalah fungsi tersebut terus memanggil dirinya sendiri dan tidak pernah berhenti memanggil dirinya sendiri! Kiat pro: tekan ctrl c. Kesalahan stack overflow dapat terjadi dalam program komputer karena penggunaan memori yang berlebihan. Penggunaan memori yang berlebihan ini terjadi pada call stack, yaitu tempat penyimpanan informasi yang berkaitan dengan subrutin aktif dalam program. Tumpukan panggilan memiliki jumlah memori terbatas yang tersedia untuk itu. Ukurannya ditentukan oleh bahasa pemrograman, arsitektur, apakah multi-threading tersedia di CPU, dan berapa banyak memori yang tersedia. Selain itu, Anda akan menemukan kesalahan stack overflow jika Anda tidak memiliki kasus dasar dalam fungsi rekursi Anda, dan mungkin perlu pergi kestackoverflow.com untuk memeriksa apa artinya. Anda dapat memikirkan kasus dasar di mana panggilan berakhir/berhenti. Setelah Anda menekan kasus dasar Anda dapat bekerja mundur sampai Anda kembali ke panggilan fungsi awal.

Algo yang menggunakan rekursi

Mari kita jelajahi pertanyaan seperti apa yang diselesaikan secara rekursif. Salah satu yang mungkin sering Anda lihat adalah deret Fibonacci di mana setiap angka dalam deret tersebut adalah jumlah dari dua angka yang mendahuluinya. Jadi, urutannya adalah: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, dan seterusnya. Anda mungkin diminta untuk memecahkan nomor fib ke-n dan Anda mungkin ingin menggunakan rekursi untuk menyelesaikan masalah ini.

Deret Fibonacci


function fib(n){
  if (n <= 2) return 1;
  return fib(n-1) + fib(n-2);
}
console.log(fib(10))

function reverse(str){
 if(str.length <= 1) return str;
 return reverse(str.slice(1)) + str[0];
}
// reverse('awesome') // 'emosewa'

Suggested posts

Sumber daya pengkodean saya yang paling sering digunakan

Sumber daya pengkodean saya yang paling sering digunakan

Minggu ini, saya menerima email dari anggota daftar email harian. Mereka ingin tahu: Sumber daya apa yang Anda kunjungi setiap hari, setiap minggu, dan setiap bulan? Pertanyaan bagus! Saya senang untuk mencoba membagikan beberapa wawasan tentang alur kerja saya & sumber daya teratas yang saya gunakan.

Kotak Alat Terminal Hipermodern

Kotak Alat Terminal Hipermodern

Alat terminal, shell, dan baris perintah menetapkan standar pada tahun 2023. Semua pengembang menggunakan terminal; bagi sebagian orang, seluruh alur kerja mereka adalah terminal Posting ini memperkenalkan Hypermodern Terminal Toolbox — alat terminal, shell, dan baris perintah yang menetapkan standar pada tahun 2023 Kitty sebagai Terminal Emulator Kitty adalah emulator terminal — alternatif dari Terminal GNOME , Alacritty atau Terminal Windows.

Related posts

Mengapa beberapa pekerja lepas memalsukan hidup mereka

Mengapa beberapa pekerja lepas memalsukan hidup mereka

Saya baru-baru ini berada di Linkedin, jejaring sosial profesional terbesar di dunia, dan menemukan postingan dari desainer lepas yang saya ikuti yang menarik perhatian saya. Mereka semua memposting foto dari pesawat terbang, di pantai dengan laptop mereka, dari kolam renang, dan kantor dengan pemandangan menakjubkan.

Dua tahun dalam desain- Yang baik, buruk, dan jelek…

Dua tahun dalam desain- Yang baik, buruk, dan jelek…

“Hai Siri, mainkan Me Dive oleh Olivia Dean.” Saat itu Mei 2021 ketika saya memulai magang di Future Academy Africa di Akure, Nigeria.

Lacak Siapa Saja Hanya dengan Nomor Telepon | Investigasi OSINT

Lacak Siapa Saja Hanya dengan Nomor Telepon | Investigasi OSINT

Anda bisa menjadi Penyelidik OSINT, Pemain CTF, atau sekadar seseorang yang menerima panggilan spam. Seseorang yang mencoba memverifikasi nomor yang Anda lihat di iklan.

Penganiayaan Umat Kristiani: Kejahatan Kebencian yang Tidak Kita Bicarakan

Lupakan Islamofobia: Kristen (dan Yahudi) adalah korban utama kejahatan kebencian agama.

Penganiayaan Umat Kristiani: Kejahatan Kebencian yang Tidak Kita Bicarakan

Pikiran rasional mana pun tahu bahwa lingkaran politik dan media didominasi oleh kiri, bahkan paling kiri, suatu keadaan yang menciptakan ketidakseimbangan dalam wacana politik. Di bidang agama, ketidakseimbangan ini terlihat jelas: surat kabar dan jaringan sayap kiri tidak terburu-buru membela iman Kristen.