码迷,mamicode.com
首页 > 编程语言 > 详细

c++之递归函数

时间:2015-03-05 01:41:48      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:

汉诺塔问题的递归实现。

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

 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 }

 

c++之递归函数

标签:

原文地址:http://www.cnblogs.com/Smart-Du/p/4314736.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!