>  기사  >  백엔드 개발  >  C++ 함수의 재귀 구현: 재귀의 고전적인 퍼즐 예인가요?

C++ 함수의 재귀 구현: 재귀의 고전적인 퍼즐 예인가요?

PHPz
PHPz원래의
2024-04-22 15:27:02934검색

재귀는 함수가 자신을 호출하여 복잡한 문제를 하위 문제로 분해하여 해결할 수 있도록 하는 프로그래밍 기술입니다. 실제 사례에서 하노이 타워 퍼즐의 재귀 구현은 다음과 같습니다. 1. 디스크가 하나만 있는 경우 대상 타워로 직접 이동합니다. 2. 소형 디스크를 보조 타워로 이동합니다. 3. 가장 큰 디스크를 대상 타워로 이동합니다. 4. 보조 타워에서 대상 타워로 작은 디스크를 이동합니다.

C++ 函数的递归实现:递归的经典谜题示例?

C++ 함수의 재귀 구현: 고전 퍼즐 예제

재귀는 함수가 문제를 해결하기 위해 자신을 호출할 수 있도록 하는 프로그래밍 기술입니다. 이는 하위 문제로 나누어야 하는 복잡한 문제에 적합합니다.

재귀 함수 구문

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.