有三根柱子,n 個圓盤,在第一個柱子那按從大到小排列,將其移到c,最少需要多少步驟?
1個盤,A->C,1步,
2個盤,A->B,A->C,B->C,3步
3個盤,吧前2個移到B,需要3步,再把第三個移到C,1步,再把B上2個移到C,總共s2+1+s2=7步
4個盤前面3個移到B,S3步,第四個移 到C,1步,吧B上3個移到C,S3步,總共S3+1+S3=15步
後面以此類推……
有n個盤子,Sn=2*S(n-1)+1
S(n-1)=2*S(n-2)+1
……………………………………
S2=2*S1+1
S1=1
用高中數列知識即可算出:Sn=2^(n-1) -1
#include
int s( int n){
if(n==1)
return 1;
else
return 2*s(n-1)+1;
}
void main()
{int n;
scanf("%d",&n);
printf("%d",s(n));
}