题目描述
若给汉诺塔传说中三根柱子分别用英文字母a,b,c命名,其中只有a柱子摆放n片圆盘(1<=n<=20), 若要把a柱子上的所有圆盘转移到c柱子上,问最少移动次数。
移动圆盘的规则如下:
每次只能移动一片圆盘 直径大的圆盘必须摆放在直径小的圆盘之下
输入格式
一个整数表示盘的个数
输出格式
一个整数表示最少移动次数
输入输出样例
输入 #1
3
输出 #1
7
我在博客中看了很多的样例都觉得他们太复杂了(可能是我这种小白C语言知识不太丰厚,反正就是看不懂),所以就给我们这样的初学者来给你们一个稍微简单点的代码,使用递归的,比较容易理解(大佬勿喷),如果你们觉得好用就不妨给我一个小心心,非常感谢。
#include<bits/stdc++.h>
using namespace std;
int f(int n){
if(n==1) return 1;
else return 2*f(n-1)+1;
}
int main() {
int n;
cin>>n;
cout<<f(n);
return 0;
}