c++之递归函数

汉诺塔问题的递归实现。

不得不说很复杂,想了一晚上才想通了执行的过程,不知道是哪个伟人想出来的,竟然把递归用的如此出神入化,我等望尘莫及。

 1 #include <iostream>
 2 using namespace std;
 3 #include<string>
 4 
 5 void move(char x, char y)  
 6 {  
 7      cout<<x<<"-->"<<y<<endl;  
 8 } 
 9 
10 
11 void f(int n,char one,char two,char three){
12     if(n == 1){
13         move(one,three);
14     }else{
15         //首先将A上的n-1个盘子借助C移动到B上,
16         //然后将A上的最后一个大盘子移动到C上,
17        //最后将B上的n-1个盘子借组A移动到C上
18         f(n - 1,one,two,three);
19         move(one,three);
20         f(n - 1,two,one,three);
21     }
22 }
23 int main(){  
24      int m;  
25      cout<<"输入盘子数:";  
26      cin>>m;;  
27      f(m,'A','B','C'); 
28 }
原文地址:https://www.cnblogs.com/Smart-Du/p/4314736.html