재귀는 함수가 자신을 호출하여 복잡한 문제를 하위 문제로 분해하여 해결할 수 있도록 하는 프로그래밍 기술입니다. 실제 사례에서 하노이 타워 퍼즐의 재귀 구현은 다음과 같습니다. 1. 디스크가 하나만 있는 경우 대상 타워로 직접 이동합니다. 2. 소형 디스크를 보조 타워로 이동합니다. 3. 가장 큰 디스크를 대상 타워로 이동합니다. 4. 보조 타워에서 대상 타워로 작은 디스크를 이동합니다.
재귀는 함수가 문제를 해결하기 위해 자신을 호출할 수 있도록 하는 프로그래밍 기술입니다. 이는 하위 문제로 나누어야 하는 복잡한 문제에 적합합니다.
C++에서 재귀 함수 구문은 다음과 같습니다.
return_type function_name(parameter_list) { // 处理基线情况 if (base_condition) { return base_result; } // 处理递归情况 return function_name(updated_parameter_list); }
여기서:
return_type
은 함수가 반환하는 유형입니다. return_type
是函数返回的类型。function_name
是函数的名称。parameter_list
是传递给函数的参数列表。base_condition
是递归的基线情况,它决定函数的递归循环何时结束。base_result
是当基线情况为 true
时函数返回的结果。updated_parameter_list
function_name
은 함수의 이름입니다. parameter_list
는 함수에 전달되는 매개변수 목록입니다. base_condition
은 함수의 재귀 루프가 끝나는 시점을 결정하는 재귀의 기준 조건입니다.
base_result
는 기준 상황이 true
일 때 함수가 반환한 결과입니다. updated_parameter_list
는 함수를 재귀적으로 호출할 때 업데이트되는 매개변수 목록입니다.
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; }🎜🎜출력: 🎜🎜
请输入圆盘数量:3 移动盘子 1 从塔 A 到塔 C 移动盘子 2 从塔 A 到塔 B 移动盘子 1 从塔 C 到塔 B 移动盘子 3 从塔 A 到塔 C 移动盘子 1 从塔 B 到塔 A 移动盘子 2 从塔 B 到塔 C 移动盘子 1 从塔 A 到塔 C
위 내용은 C++ 함수의 재귀 구현: 재귀의 고전적인 퍼즐 예인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!