8_递归.cpp

#include <iostream>		// 预编译命令
using namespace std;

int step=1;			     // 整型全局变量,预置1,步数

void  move(int, char, char, char);	// 声明要用到的被   调用函数

int main()			        // 主函数
{					        // 主程序开始
	int n;			        // 整型变量,n为盘数,
	cout << "请输入盘数 n=";	// 提示信息
	cin >> n;			          // 输入正整数n
	cout<< "在3根柱子上移"	// 输出提示信息
		<< n << "只盘的步骤为:"<<endl;
    move(n,'a','b','c');		 // 调用move函数
	return 0;			           // 主函数结束
}		               	
// 以下函数是被主程序调用的函数
// 函数名:move
// 输    入:m,整型变量,表示盘子数目
//		   p,q,r为字符型变量,表示柱子标号
// 返回值:无
void move(int m, char p, char q, char r)
{				// 自定义函数体开始
	if (m==1)		// 如果m为1,则为直接可解结点,
	{
		// 直接可解结点,输出移盘信息
		cout<<"["<<step<<"] move 1# from "<<p<<" to "<<r<<endl;  
		step++;		// 步数加1
	}
	else			// 如果不为1,则要调用move(m-1)
	{
		move(m-1,p,r,q);	// 递归调用move(m-1)
		//直接可解结点,输出移盘信息
		cout<<"["<<step<<"] move "<<m
		       <<"# from "<< p<<" to "<< r<<endl; 
		step++;			// 步数加1
		move(m-1,q,p,r);	// 递归调用move(m-1)
	}
}				//自定义函数体结束

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值