题目描述
如果将课本上的汉诺塔问题稍做修改:给定 N 只盘子,3 根柱子,但是允许每次最多移动相邻的 M 只盘子(当然移动盘子的数目也可以小于 M), 最少需要多少次?输入格式
输入数据仅有一行,包括两个数 N 和 M(0<=M<=N<=8)输出格式
仅输出一个数,表示需要移动的最少次数#include<iostream>
using namespace std;
int Recursion(int n)
{
if (n == 1)
return 1;
if (n == 2)
return 2;
if (n > 2)
return Recursion(n - 1) + Recursion(n - 2);
}
int main()
{
int n=0;
while (scanf("%d", &n) != EOF)
{
cout << Recursion(n) << endl;
}
return 0;
}