首页 > 编程语言 > 详细

c++之递归函数

时间:2015-03-05 01:40:25      阅读:320      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!