Rumah >pembangunan bahagian belakang >C++ >Pelaksanaan rekursif fungsi C++: Contoh teka-teki klasik rekursi?
Rekursi ialah teknik pengaturcaraan yang membolehkan fungsi memanggil dirinya sendiri untuk menyelesaikan masalah yang kompleks dengan menguraikannya kepada sub-masalah. Dalam kes praktikal, pelaksanaan rekursif teka-teki Menara Hanoi: 1. Apabila terdapat hanya satu cakera, bergerak terus ke menara sasaran. 2. Gerakkan cakera kecil ke menara tambahan. 3. Alihkan cakera terbesar ke menara sasaran. 4. Alihkan cakera kecil dari menara tambahan ke menara sasaran.
Rekursi ialah teknik pengaturcaraan yang membenarkan fungsi memanggil dirinya sendiri untuk menyelesaikan masalah. Ini sesuai untuk masalah kompleks yang perlu dipecahkan kepada sub-masalah.
Dalam C++, sintaks fungsi rekursif adalah seperti berikut:
return_type function_name(parameter_list) { // 处理基线情况 if (base_condition) { return base_result; } // 处理递归情况 return function_name(updated_parameter_list); }
Di mana:
return_type
ialah jenis yang dikembalikan oleh fungsi tersebut. return_type
是函数返回的类型。function_name
是函数的名称。parameter_list
是传递给函数的参数列表。base_condition
是递归的基线情况,它决定函数的递归循环何时结束。base_result
是当基线情况为 true
时函数返回的结果。updated_parameter_list
base_result
ialah hasil yang dikembalikan oleh fungsi apabila situasi garis dasar adalah true
. updated_parameter_list
ialah senarai parameter yang dikemas kini apabila memanggil fungsi secara rekursif.
void hanoi(int n, char from, char to, char aux) { // 基线情况:只有一个圆盘时,直接移动到目标塔 if (n == 1) { cout << "移动盘子 " << n << " 从塔 " << from << " 到塔 " << to << endl; return; } // 递归情况:将塔上的较小圆盘移动到辅助塔 hanoi(n-1, from, aux, to); // 将最大的圆盘移动到目标塔 cout << "移动盘子 " << n << " 从塔 " << from << " 到塔 " << to << endl; // 将较小的圆盘从辅助塔移动到目标塔 hanoi(n-1, aux, to, from); } int main() { int num_disks; cout << "请输入圆盘数量:"; cin >> num_disks; // 调用递归函数解决汉诺塔问题 hanoi(num_disks, 'A', 'C', 'B'); return 0; }🎜🎜Output: 🎜🎜
请输入圆盘数量:3 移动盘子 1 从塔 A 到塔 C 移动盘子 2 从塔 A 到塔 B 移动盘子 1 从塔 C 到塔 B 移动盘子 3 从塔 A 到塔 C 移动盘子 1 从塔 B 到塔 A 移动盘子 2 从塔 B 到塔 C 移动盘子 1 从塔 A 到塔 C
Atas ialah kandungan terperinci Pelaksanaan rekursif fungsi C++: Contoh teka-teki klasik rekursi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!