#include <stdio.h>
#include <stdlib.h>
int main()
{
long long n,f[36];
int i;
f[1]=2;
for(i=2;i<=35;i++){
f[i]=3*f[i-1]+2;
}
while(scanf("%lld",&n)!=EOF){
printf("%lld\n",f[n]);
}
return 0;
}对于n个圆盘,可以把前n-1个圆盘看做整体移动,前n-1个圆盘往返一次,再从左到右移动一次,第n个圆盘从左到右移动一次
所以可得出递推式f[i]=3*f[i-1]+2。
本文通过一个具体的C语言程序实现汉诺塔问题,介绍了递归算法的应用。利用递推公式f[i]=3*f[i-1]+2来解决汉诺塔问题中圆盘的移动规律,并详细展示了如何用C语言进行实现。
868

被折叠的 条评论
为什么被折叠?



