Video: RASA - Пчеловод | ПРЕМЬЕРА КЛИПА 2019 2024
Rekursi adalah perkataan yang besar dan menakutkan yang sering anda dengar tentang pengaturcaraan, terutamanya jenis pengaturcaraan yang mereka ajarkan di universiti. Walaupun ia adalah satu konsep yang mudah untuk menerangkan, ia benar-benar pemikat fikiran ketika datang untuk memahami bagaimana rekursi berfungsi. Kebanyakan orang hanya menerimanya dan teruskan. Bukan disini!
Rekursi pada dasarnya adalah proses fungsi yang memanggilnya sendiri. Sebagai contoh:
void funct (int x) {funct (x);}
Dalam kod ini, anda melihat contoh yang mengerikan dari fungsi rekursif, tetapi berfungsi sebagai ilustrasi di sini: () fungsi panggilan sendiri. Itulah rekursi. Sekarang apa yang berlaku dalam contoh ini pada dasarnya adalah gelung yang tidak berkesudahan, dan, terima kasih kepada sesuatu yang teknikal atau yang disebut, stack pointe r , komputer akhirnya terhempas. Tetapi ia hanya satu ilustrasi.
Untuk rekursi untuk berfungsi, fungsi mesti mempunyai keadaan bailout, seperti gelung. Oleh itu, sama ada nilai yang diluluskan kepada fungsi rekursif atau nilai pulangannya mesti diuji. Berikut adalah contoh yang lebih baik dari fungsi rekursif:
rekursa batal (int x) {jika (x == 0) pulangan; lain {puts ("Boop!"); rekursi (- x);}}
Fungsi rekursi () menerima nilai x . Jika x sama dengan sifar, bails fungsi. Jika tidak, fungsi dipanggil semula, tetapi nilai x dikurangkan. Pengendali awalan susunan digunakan supaya nilai x dikurangkan sebelum panggilan dibuat.
Contoh rekursi () berfungsi pada dasarnya meludahkan teks Boop! beberapa kali. Jadi jika rekursi () dipanggil dengan nilai 10, anda dapat melihat teks yang dipaparkan sepuluh kali.
Bahagian gila tentang rekursi adalah bahawa fungsi terus memanggil sendiri, membungkus dirinya lebih ketat dan ketat, seolah-olah ia berada dalam lingkaran. Dalam contoh terdahulu, keadaan x == 1 akhirnya menenangkan kekacauan yang berliku-liku, semakin menarik kembali sehingga fungsi itu selesai.
Kod berikut menunjukkan program penuh menggunakan fungsi rekursi sampel ().
#include recursion void (int x); int main () {recursion (10); return (0);} void recursion (int x) {if (x == 0) return; lain {puts ("Boop!"); rekursi (- x);}}
Demonstrasi biasa rekursi adalah fungsi faktorial. faktorial adalah hasil daripada mendarabkan nilai oleh setiap integer positifnya. Sebagai contoh:
4! = 4 × 3 × 2 × 1
Hasil faktorial ini ialah 24. Komputer juga boleh membuat pengiraan ini, sama ada melaksanakan gelung atau mencipta fungsi rekursif.Berikut adalah fungsi berikut:
int factorial (int x) {jika (x == 1) pulangan (x); lain kembali (x * factorial (x-1));}
Seperti fungsi rekursif lain, fungsi faktorial () mengandungi keadaan keluar: x == 1. Jika tidak, fungsi itu dipanggil semula dengan satu kurang daripada nilai semasa x . Tetapi semua tindakan berlaku dengan nilai pulangan.