Rekursi ialah teknik di mana fungsi memanggil dirinya sendiri, dan digunakan secara meluas dalam senario di mana masalah diselesaikan langkah demi langkah. Dalam C++, rekursi mempunyai kegunaan biasa berikut: Menyelesaikan nombor Fibonacci Mengira faktorial Mengira pilih atur dan gabungan Melintasi struktur pokok Menyelesaikan masalah penyelesaian maze
Pelaksanaan rekursif fungsi C++: Teroka kegunaan biasa rekursi dalam pengaturcaraan
teknik sains yang membolehkan sesuatu fungsi memanggil dirinya. Ia digunakan secara meluas dalam senario yang memerlukan penyelesaian masalah langkah demi langkah. Artikel ini akan meneroka kegunaan biasa rekursi dalam C++ dan menggambarkannya melalui kes praktikal.
Penggunaan asas: Jujukan Fibonacci
Penggunaan rekursif yang paling mudah ialah mencari Jujukan Fibonacci. Setiap nombor dalam jujukan ini ialah jumlah dua nombor sebelumnya Pelaksanaan khusus adalah seperti berikut:
int fibonacci(int n) {
if (n <= 1) {
return 1;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
Salin selepas log masuk
Pengiraan Kilang
Mencari faktorial nombor juga merupakan aplikasi rekursif klasik. Faktorial ialah hasil darab nombor itu dengan semua integer positif kurang daripadanya.
int factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
Salin selepas log masuk
Permutasi dan gabungan
Rekursi juga boleh digunakan untuk mengira pilih atur dan gabungan. Susunan ialah cara menyusun objek dalam susunan tertentu, manakala gabungan ialah cara menyusun objek tanpa mengambil kira susunan.
Permutasi:
int permutations(int n, int r) {
if (r == 0) {
return 1;
} else {
return n * permutations(n - 1, r - 1);
}
}
Salin selepas log masuk
Kombinasi:
int combinations(int n, int r) {
if (r == 0 || n == r) {
return 1;
} else {
return combinations(n - 1, r - 1) + combinations(n - 1, r);
}
}
Salin selepas log masuk
Traversal struktur pokok
Rekursi digunakan secara meluas untuk melintasi struktur pokok, seperti pokok dan graf.
Perjalanan pra-pesanan pokok binari:
void preorderTraversal(TreeNode* root) {
if (root != nullptr) {
std::cout << root->val;
preorderTraversal(root->left);
preorderTraversal(root->right);
}
}
Salin selepas log masuk
Kes praktikal: Penyelesaian labirin
Menggunakan rekursi boleh menyelesaikan masalah penyelesaian labirin. Algoritma rekursif berfungsi dengan mencuba semua laluan yang mungkin sehingga ia menemui laluan ke pintu keluar. 🎜rreeee
Atas ialah kandungan terperinci Pelaksanaan rekursif fungsi C++: Apakah kegunaan biasa rekursi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!