Apakah Rekursi dan Bagaimana Anda Menggunakannya?

Apakah Rekursi dan Bagaimana Anda Menggunakannya?

Rekursi ialah konsep pengaturcaraan yang menyeronokkan tetapi boleh menjadi sedikit sukar untuk dipelajari. Rekursi hanya bermaksud sesuatu yang berulang. Jika anda ingin melihat contoh rekursi yang kurang ajar, cuba cari rekursi di Google. Anda akan menemui telur Paskah di mana cadangan hasil carian adalah rekursif. Jika, sebaliknya, anda ingin belajar cara mengekod fungsi rekursif, baca terus!

Apakah Fungsi Rekursif?

Fungsi rekursif ialah fungsi yang memanggil dirinya sendiri. Anda pada asasnya membuat gelung dengan fungsi. Seperti yang anda boleh bayangkan, ini boleh menjadi fungsi yang sukar untuk ditulis. Anda tidak mahu kod anda berjalan selama-lamanya.

Sama seperti gelung, fungsi rekursif akan dikawal oleh keadaan. Setelah syarat dipenuhi, fungsi berhenti memanggil dirinya sendiri, yang menghentikan gelung. Beginilah cara anda boleh mencipta fungsi yang memanggil dirinya sendiri tanpa ia berjalan selama-lamanya.

Walaupun fungsi rekursif bertindak seperti gelung, ia dilaksanakan oleh komputer secara berbeza. Jadi, sesetengah algoritma lebih cekap dalam gelung dan yang lain mendapat manfaat daripada fungsi rekursif. Tetapi sebelum kita melihat cara menggunakan fungsi rekursif, anda perlu tahu cara menulisnya.

Cara Menulis Fungsi Rekursif

Semua fungsi rekursif mempunyai struktur asas yang sama:

FUNCTION name IF condition THEN RETURN result ELSE CALL FUNCTION name END FUNCTION

Contoh di atas ditulis dalam pseudo-code. Ia menggariskan struktur fungsi, yang boleh digunakan pada mana-mana bahasa. Untuk kesederhanaan, dalam artikel ini, kami akan menumpukan pada Python.

Perkara pertama yang perlu diperhatikan tentang fungsi rekursif ialah apabila syarat dipenuhi, fungsi itu keluar dari rekursif. Ini bermakna apabila anda menulis fungsi rekursif, perkara pertama yang anda ingin tentukan ialah masa untuk menghentikan rekursif.

Jika syarat tidak dipenuhi, fungsi akan memanggil dirinya sendiri. Jadi, jika anda ingin menghantar maklumat ke gelung seterusnya, anda perlu menghantarnya sebagai hujah dalam fungsi anda. Ini boleh memberikan fungsi rekursif lebih kuasa.

Berkaitan: Apakah Fungsi dalam Pengaturcaraan?

Contoh Fungsi Rekursif dalam Python

Ia akan menjadi lebih mudah untuk memahami cara rekursi berfungsi apabila anda melihatnya dalam tindakan. Untuk menunjukkannya, mari tulis fungsi rekursif yang mengembalikan faktorial nombor.

Faktor mengembalikan hasil darab suatu nombor dan semua integer sebelum itu. Sebagai contoh, faktorial bagi 5 ialah 5 x 4 x 3 x 2 x 1 atau, 120.

def factorialFunction(numberToMultiply): if numberToMultiply == 1 : return 1 else : return numberToMultiply * factorialFunction(numberToMultiply - 1) result = factorialFunction(3) print(result) //Outputs: 6

Program di atas akan memberikan anda keputusan 6, yang merupakan faktorial bagi nombor 3. Ini boleh menjadi sedikit mengelirukan pada mulanya. Ia akan membantu jika kita menjalankan program langkah demi langkah.

  1. Apabila fungsi dipanggil, numberToMultiply sama dengan 3.
  2. Syarat tidak dipenuhi, jadi kita pergi ke syarat lain .
  3.  Fungsi kami mengembalikan 3 * tetapi kemudian dijeda. Ia mesti memanggil dirinya sendiri untuk menentukan baki nilai yang dipulangkan.
  4. Apabila fungsi dipanggil kali ini, nilai numberToMultiply sama dengan 2.
  5. Syarat tidak dipenuhi, jadi kita pergi ke syarat lain.
  6. Fungsi kami mengembalikan 2 * tetapi kemudian dijeda. Ia mesti memanggil dirinya sendiri untuk menentukan baki nilai yang dipulangkan.
  7. Fungsi dipanggil lagi. Kali ini, nilai numberToMultiply sama dengan 1.
  8. Syarat kami jika dipenuhi. Fungsi mengembalikan 1.
  9. Fungsi dari langkah 6 kini boleh mengembalikan 2 * 1 kepada fungsi pada langkah 3.
  10. Fungsi pada langkah tiga kini boleh mengembalikan 3 * 2 * 1, iaitu 6.

Apakah Rekursi dan Bagaimana Anda Menggunakannya?

Rekursi adalah konsep yang rumit. Ia boleh membantu untuk menganggapnya sebagai menyusun satu fungsi di atas fungsi lain. Setelah satu fungsi akhirnya diselesaikan, ia boleh menghantar maklumat kembali ke dalam timbunan, sehingga semua fungsi mempunyai jawapannya.

Inilah sebenarnya yang dilakukan oleh komputer anda. Apabila anda memanggil fungsi, ia disimpan dalam ingatan sehingga ia dikembalikan. Ini bermakna fungsi rekursif boleh menggunakan lebih banyak memori daripada gelung.

Oleh itu, mungkin tidak cekap untuk menulis gelung sebagai fungsi rekursif, tetapi ia adalah cara terbaik untuk berlatih membinanya. Anda sepatutnya boleh membuat kod gelung sebagai fungsi rekursif dengan hasil yang serupa.

Contoh Cara Menukar Gelung kepada Fungsi Rekursif

print("Enter an even number:") i = int(input()) while (i % 2) != 0 : print("That number is not even. Please enter a new number:") i = int(input())

Gelung ini juga boleh ditulis secara rekursif sebagai:

def recursiveFunction(number) : if (number % 2) == 0 : return number else: print("That number is not even. Please enter a new number:") recursiveFunction(int(input())) print("Enter and even number:") i = recursiveFunction(int(input()))

Langkah pertama ialah menentukan bila anda mahu fungsi anda berhenti. Dalam kes ini, kami mahu ia berhenti sebaik sahaja nombor genap dimasukkan. Dalam contoh kami, nombor menjejaki input pengguna. Jika mereka memasukkan nombor genap, kami mengembalikan nombor itu. Jika tidak, kami akan terus meminta nombor baru.

Untuk menyediakan gelung, kami memanggil fungsi kami sekali lagi. Tetapi kali ini, nombor yang kita hantar ke fungsi seterusnya adalah nombor baru yang dimasukkan oleh pengguna. Panggilan fungsi seterusnya akan menyemak nombor.

Ini adalah fungsi yang sangat buruk! Ya, ia sedang menyemak sama ada nombor itu genap, seperti gelung kami, tetapi ia tidak cekap. Setiap kali pengguna memasukkan nombor ganjil, fungsi tersebut disimpan dalam ingatan dan fungsi baharu dipanggil. Jika anda melakukan ini cukup kali, anda akan kehabisan ingatan!

Berkaitan: Contoh Python Asas Yang Akan Membantu Anda Belajar Dengan Pantas

Contoh Dunia Sebenar bagi Fungsi Rekursif

Contoh di atas adalah contoh yang baik tentang masa tidak menggunakan rekursi. Jadi, di manakah rekursi digunakan? Contoh yang baik apabila anda ingin menggunakan rekursi ialah mencari pokok binari.

Apakah Rekursi dan Bagaimana Anda Menggunakannya?

Apabila data distrukturkan dalam pepohon binari, anda perlu pergi ke banyak laluan untuk mencari data. Pada setiap titik dalam pokok, anda perlu memutuskan sama ada anda mahu terus mencari di sebelah kanan atau kiri. Anda boleh menyimpan bahagian pokok yang anda lawati dalam pembolehubah, tetapi fungsi rekursif secara semula jadi boleh menjejaki maklumat tersebut.

Bayangkan kita sedang mencari nombor enam dalam pokok di atas. Kita boleh membuat fungsi rekursif yang mencari pokok dari kiri ke kanan. Algoritma akan kelihatan seperti ini:

FUNCTION searchTree(branchToSearch) IF find 6 OR end of tree THEN RETURN result ELSE PROCESS branch CALL FUNCTION searchTree(left) CALL FUNCTION searchTree(right) END FUNCTION

Dalam contoh pseudokod ini, algoritma akan mencari bahagian kiri pokok terlebih dahulu. Setiap kali ia melawat nombor baharu, fungsi itu dijeda dan disimpan dalam ingatan. Ini membolehkan kami menjejaki di mana kami berada.

Algoritma akan sentiasa mencari bahagian kiri sejauh yang boleh dahulu. sebaik sahaja ia sampai ke hujung pokok, searchTree(kiri) akan selesai dan ia akan menyemak bahagian kanan. Setelah kedua-dua belah disemak, carian menyandarkan satu cawangan dan terus menyemak bahagian kanan.

Jika algoritma mencari keseluruhan pokok, ia akan melakukannya mengikut urutan:

2, 7, 2, 6, 5, 11, 5, 9, dan 4

Lihat jika anda boleh mengikuti bersama menggunakan kod pseudo di atas.

Semakan Rekursi

Rekursi ialah topik lanjutan. Ia akan mengambil sedikit masa untuk memahami dan lebih lama lagi untuk mahir mengekodnya. Ia akan membantu jika anda berjalan melalui fungsi rekursif langkah demi langkah. Malah mungkin membantu untuk menyusun kad indeks atau nota pos semasa anda melalui fungsi apabila belajar untuk mewakili setiap panggilan fungsi.

Apabila menulis fungsi rekursif, mulakan dengan memutuskan cara anda ingin keluar dari fungsi tersebut. Seterusnya, tentukan cara menyediakan gelung anda. Kenal pasti maklumat yang perlu dihantar ke panggilan fungsi seterusnya dan apa yang perlu dikembalikan.

Cara terbaik untuk mempelajari rekursi adalah dengan mempraktikkannya dan belajar daripada kesilapan anda. Lihat beberapa kod lama anda dan cabar diri anda untuk menulis semula gelung sebagai fungsi rekursif. Ia mungkin tidak akan menjadikan kod anda lebih cekap, tetapi ia akan menjadi amalan yang baik.


Cara Mengira Nilai nCr

Cara Mengira Nilai nCr

Gabungan ialah konsep matematik. Ia merujuk kepada susunan beberapa objek yang susunannya tidak relevan. Formula asas menerangkan bilangan gabungan yang sah.

Cara Menulis & Menyusun Kod Soliditi Pertama Anda

Cara Menulis & Menyusun Kod Soliditi Pertama Anda

Solidity ialah bahasa pengaturcaraan yang digunakan oleh kontrak pintar pada blockchain Ethereum. Ia adalah bahasa pengaturcaraan berorientasikan objek yang ditaip secara statik.

SQL vs. NoSQL: Apakah Pangkalan Data Terbaik untuk Projek Anda Seterusnya?

SQL vs. NoSQL: Apakah Pangkalan Data Terbaik untuk Projek Anda Seterusnya?

SQL vs. NoSQL: Apakah Pangkalan Data Terbaik untuk Projek Anda Seterusnya?

Cara Mencari Kiub dan Petak Sempurna N-Digit Menggunakan Python, C++ dan JavaScript

Cara Mencari Kiub dan Petak Sempurna N-Digit Menggunakan Python, C++ dan JavaScript

Ramai pengaturcara suka menyelesaikan masalah matematik rumit menggunakan kod. Ia membantu menajamkan minda dan meningkatkan kemahiran menyelesaikan masalah. Dalam artikel ini, anda akan belajar cara mencari petak dan kiub sempurna n-digit terkecil dan terbesar menggunakan Python, C++ dan JavaScript. Setiap contoh juga mengandungi output sampel untuk beberapa nilai yang berbeza.

Cara Menggunakan Python sebagai Kalkulator Baris Perintah

Cara Menggunakan Python sebagai Kalkulator Baris Perintah

Walaupun anda boleh menggunakan kalkulator grafik pada komputer anda, penterjemah bahasa pengaturcaraan Python boleh berfungsi sebagai kalkulator meja. Ia adalah jenaka yang popular dalam komuniti Python yang disebut dalam tutorial rasmi. Inilah cara anda boleh menggunakan Python sebagai kalkulator.

Bermula Dengan Buku Nota Jupyter: Satu Tutorial

Bermula Dengan Buku Nota Jupyter: Satu Tutorial

Jika anda seorang saintis data yang bercita-cita tinggi yang bekerja dengan Python atau R, anda perlu tahu cara menggunakan Jupyter Notebook. Ia adalah IDE sumber terbuka dan berasaskan pelayan untuk memanipulasi data, berkongsi kod langsung, serta mengurus aliran kerja sains data.

Pengekodan Bukan untuk Semua Orang: 9 Pekerjaan Teknologi yang Anda Boleh Dapatkan Tanpanya

Pengekodan Bukan untuk Semua Orang: 9 Pekerjaan Teknologi yang Anda Boleh Dapatkan Tanpanya

Teknologi, tidak dinafikan, adalah industri masa depan. Jika anda salah seorang daripada berjuta-juta dewasa muda yang akan terjun ke peringkat pertama kerjaya anda, anda mungkin tertanya-tanya apa yang perlu dilakukan jika anda tidak suka pengekodan.

7 Perintah Penting untuk Bermula Dengan Python untuk Pemula

7 Perintah Penting untuk Bermula Dengan Python untuk Pemula

Mempelajari bahasa pengaturcaraan baharu seperti Python menjadi mudah jika anda mempunyai peta jalan yang komprehensif yang memperincikan konsep yang perlu dipelajari sebagai pemula dan cara untuk maju lebih jauh untuk mencapai pencapaian seterusnya. Malah pengaturcara perantaraan harus kerap meneliti asas mereka untuk membina asas yang kukuh untuk diri mereka sendiri.

Aplikasi Web ASP.NET Pertama Anda: Cara Bermula

Aplikasi Web ASP.NET Pertama Anda: Cara Bermula

ASP.NET ialah rangka kerja merentas platform percuma Microsoft untuk membina apl dan perkhidmatan web. Platform ASP.NET ialah sambungan kepada .NET, platform pembangun alat, bahasa pengaturcaraan dan perpustakaan yang digunakan untuk membina aplikasi yang berbeza.

9 Alternatif Docker Terbaik untuk Pengurusan Kontena

9 Alternatif Docker Terbaik untuk Pengurusan Kontena

Bekas sangat bermanfaat untuk pembangunan perisian, penggunaan dan pengurusan dalam persekitaran maya. Docker berguna dalam proses kontena, tetapi ia bukan satu-satunya platform yang ada. Jika anda sedang mencari beberapa alternatif kepada Docker, jangan cari lagi. Senarai ini mempamerkan beberapa alternatif Docker yang kaya dengan ciri dan cekap untuk digunakan dalam projek anda yang seterusnya.

Adakah ARCore atau ARKit Lebih Baik Untuk Mencipta Pengalaman Realiti Diperkukuh?

Adakah ARCore atau ARKit Lebih Baik Untuk Mencipta Pengalaman Realiti Diperkukuh?

Beberapa aplikasi dan pengalaman mudah alih yang paling banyak diperkatakan hari ini menggunakan teknologi realiti tambahan. Walaupun sesetengah pengalaman ini boleh berfungsi pada hampir mana-mana peranti mudah alih, yang lain hanya berfungsi pada model yang lebih baharu dan lebih mahal. Membangunkan dan menggunakan pengalaman yang lebih mantap ini memerlukan ARCore dan ARKit.

Cara Membuat Cawangan Baharu dalam Git

Cara Membuat Cawangan Baharu dalam Git

Cawangan adalah teras kepada konsep kawalan versi dalam pengaturcaraan, dan Git khususnya. Artikel permulaan ini memberitahu anda apa itu cawangan dan cara menciptanya menggunakan beberapa alatan yang berbeza.

Cara Menggunakan Python if Statement

Cara Menggunakan Python if Statement

Pernyataan if adalah penggerak pengaturcaraan logik. Akibatnya, pemahaman yang lebih baik tentang Pythons adalah tambahan penting kepada kemahiran pengaturcaraan Python anda.

5 Lencana Teratas Yang Akan Mengecas Repositori GitHub Anda

5 Lencana Teratas Yang Akan Mengecas Repositori GitHub Anda

Lencana GitHub boleh meningkatkan kebolehbacaan repositori dengan menyediakan pengguna dengan cara yang pantas untuk menangkap metrik repositori. Lencana boleh dibenamkan dalam README.md anda untuk menjelaskan kepentingan dan keperluan projek anda kepada pembangun lain. Akibatnya, pembaca mendapat idea yang sangat pantas tentang repositori dengan menyemak lencana yang dilampirkan.

Bermula Dengan Redis dan PHP untuk Penyimpanan Data Pantas

Bermula Dengan Redis dan PHP untuk Penyimpanan Data Pantas

Enjin storan Redis yang popular ialah alat yang sangat baik dan mesti ada dalam mana-mana senjata pembangun perisian. Enjin storan dalam memori membolehkan penyimpanan dan mendapatkan semula data yang sangat pantas, sehingga 32 juta pertanyaan sesaat yang mengagumkan, menjadikannya pelengkap utama kepada mana-mana enjin pangkalan data utama.

Apakah WYSIWYG?

Apakah WYSIWYG?

Sebahagian daripada keajaiban pembangunan perisian berlaku apabila baris kod berubah menjadi lebih daripada jumlah bahagiannya. Anda akan mendapati anda memerlukan sedikit visualisasi kreatif apabila cuba membina secara abstrak dengan cara ini. Ini boleh berlaku untuk pemprosesan perkataan atau reka bentuk web, sama seperti yang boleh dilakukan untuk pengaturcaraan.

Cara Memasang .NET Framework Versi 3.5 pada Windows 10

Cara Memasang .NET Framework Versi 3.5 pada Windows 10

Sebagai pengguna Windows, anda mungkin sekurang-kurangnya sekali menjumpai perkataan .NET Framework. Ia merupakan rangka kerja perisian yang dibangunkan oleh Microsoft yang membolehkan anda membina dan menjalankan program C#, C++, F# dan Visual Basic. Versi .NET terkini ialah 4.8, tetapi komputer anda mungkin memerlukan versi .NET yang lebih lama (seperti .NET 3.5) untuk menjalankan beberapa apl.

WordPress vs. Wix: Perbezaan Utama

WordPress vs. Wix: Perbezaan Utama

Anda sering menghadapi dilema klasik semasa membina tapak web untuk diri sendiri atau perniagaan anda. WordPress vs. Wix—yang mana satu untuk dipilih dan apakah pilihan terbaik untuk anda?

10 Distro Linux Terbaik untuk Pembangun

10 Distro Linux Terbaik untuk Pembangun

Walaupun Linux mungkin bukan sistem pengendalian yang digemari untuk pengguna biasa, ia adalah pilihan utama untuk kebanyakan pembangun dan pengaturcara. Linux ialah OS yang lebih praktikal yang direka secara eksplisit dengan mengambil kira pengaturcaraan dan pembangun.

Cara Menyasarkan Bahagian Halaman Web Menggunakan Pemilih CSS

Cara Menyasarkan Bahagian Halaman Web Menggunakan Pemilih CSS

Cascading Style Sheets (CSS) membolehkan anda mengubah rupa halaman web anda. Daripada fon dan warna kepada jarak dan susun atur keseluruhan, semua jenis alatan reka bentuk berada di hujung jari anda. Walaupun CSS adalah bahasa yang rumit secara keseluruhannya, hanya terdapat dua konsep asas yang perlu anda fahami untuk bermula.

Cara Mengira Nilai nCr

Cara Mengira Nilai nCr

Gabungan ialah konsep matematik. Ia merujuk kepada susunan beberapa objek yang susunannya tidak relevan. Formula asas menerangkan bilangan gabungan yang sah.

Cara Menulis & Menyusun Kod Soliditi Pertama Anda

Cara Menulis & Menyusun Kod Soliditi Pertama Anda

Solidity ialah bahasa pengaturcaraan yang digunakan oleh kontrak pintar pada blockchain Ethereum. Ia adalah bahasa pengaturcaraan berorientasikan objek yang ditaip secara statik.

SQL vs. NoSQL: Apakah Pangkalan Data Terbaik untuk Projek Anda Seterusnya?

SQL vs. NoSQL: Apakah Pangkalan Data Terbaik untuk Projek Anda Seterusnya?

SQL vs. NoSQL: Apakah Pangkalan Data Terbaik untuk Projek Anda Seterusnya?

Cara Mencari Kiub dan Petak Sempurna N-Digit Menggunakan Python, C++ dan JavaScript

Cara Mencari Kiub dan Petak Sempurna N-Digit Menggunakan Python, C++ dan JavaScript

Ramai pengaturcara suka menyelesaikan masalah matematik rumit menggunakan kod. Ia membantu menajamkan minda dan meningkatkan kemahiran menyelesaikan masalah. Dalam artikel ini, anda akan belajar cara mencari petak dan kiub sempurna n-digit terkecil dan terbesar menggunakan Python, C++ dan JavaScript. Setiap contoh juga mengandungi output sampel untuk beberapa nilai yang berbeza.

Cara Menggunakan Python sebagai Kalkulator Baris Perintah

Cara Menggunakan Python sebagai Kalkulator Baris Perintah

Walaupun anda boleh menggunakan kalkulator grafik pada komputer anda, penterjemah bahasa pengaturcaraan Python boleh berfungsi sebagai kalkulator meja. Ia adalah jenaka yang popular dalam komuniti Python yang disebut dalam tutorial rasmi. Inilah cara anda boleh menggunakan Python sebagai kalkulator.

Cara Membenamkan Tweet dalam Siaran WordPress Anda

Cara Membenamkan Tweet dalam Siaran WordPress Anda

Membenamkan perkhidmatan pihak ketiga pada siaran WordPress anda ialah cara yang menarik untuk memikat minat pelawat. Kandungan terbenam juga menyediakan isyarat visual yang memudahkan pengimbasan. WordPress telah memudahkan penambahan jenis kandungan ini.

Bermula Dengan Buku Nota Jupyter: Satu Tutorial

Bermula Dengan Buku Nota Jupyter: Satu Tutorial

Jika anda seorang saintis data yang bercita-cita tinggi yang bekerja dengan Python atau R, anda perlu tahu cara menggunakan Jupyter Notebook. Ia adalah IDE sumber terbuka dan berasaskan pelayan untuk memanipulasi data, berkongsi kod langsung, serta mengurus aliran kerja sains data.

Pengekodan Bukan untuk Semua Orang: 9 Pekerjaan Teknologi yang Anda Boleh Dapatkan Tanpanya

Pengekodan Bukan untuk Semua Orang: 9 Pekerjaan Teknologi yang Anda Boleh Dapatkan Tanpanya

Teknologi, tidak dinafikan, adalah industri masa depan. Jika anda salah seorang daripada berjuta-juta dewasa muda yang akan terjun ke peringkat pertama kerjaya anda, anda mungkin tertanya-tanya apa yang perlu dilakukan jika anda tidak suka pengekodan.

7 Perintah Penting untuk Bermula Dengan Python untuk Pemula

7 Perintah Penting untuk Bermula Dengan Python untuk Pemula

Mempelajari bahasa pengaturcaraan baharu seperti Python menjadi mudah jika anda mempunyai peta jalan yang komprehensif yang memperincikan konsep yang perlu dipelajari sebagai pemula dan cara untuk maju lebih jauh untuk mencapai pencapaian seterusnya. Malah pengaturcara perantaraan harus kerap meneliti asas mereka untuk membina asas yang kukuh untuk diri mereka sendiri.

Aplikasi Web ASP.NET Pertama Anda: Cara Bermula

Aplikasi Web ASP.NET Pertama Anda: Cara Bermula

ASP.NET ialah rangka kerja merentas platform percuma Microsoft untuk membina apl dan perkhidmatan web. Platform ASP.NET ialah sambungan kepada .NET, platform pembangun alat, bahasa pengaturcaraan dan perpustakaan yang digunakan untuk membina aplikasi yang berbeza.