http://ac.jobdu.com/problem.php?cid=1040&pid=87
思路:若要移动k个盘子到第三根柱子,需要3步
1、将上面k-1个移动到第三根柱子,再把最大那个移动到第二根(第二根当前为空)
2、将第三根上的k-1个移回第一根,将第二根上那个盘子移到第三根,此时最大的盘子就位
3、将再将k-1个盘子移到第三根
综上:F(x)= 3*F(x-1)+2 x>=2
2 x==1
#include <stdio.h>
#include <string.h>
long long F(int num) //递归结果将很大,式子中含3^35
{
if (num==1)
{
return 2; //递归出口,只有一个盘子,移动两次
}
else
{
return 3*F(num-1)+2; //递归主体
}
}
int main()
{
int n;
while (scanf("%d",&n)!=EOF)
{
printf("%lld\n",F(n));
}
return 0;
}
//九度里面 用 long long %lld
//vc6 用 _int64 %I64d