第一种,用函数递归的方法
#include <stdio.h>
//求汉诺塔函数
int Hanlotta(int x)
{
if (x > 1)
{
//发现规律:第n个盘移动的次数是n-1个盘两倍多一
return 2 * Hanlotta(x - 1) + 1;
}
else
{
return 1;
}
}
int main()
{
int n = 0;
printf("请输入一个数,该数为你设置的汉诺塔盘数");
scanf("%d", &n);
printf("%d",Hanlotta(n));
return 0;
}
第二种,不用递归的方法
#include <stdio.h>
//求汉诺塔函数
int Hanlotta(int x)
{
int a = 1;
int b = 1;
while (x > 1)
{
//发现规律:第n个盘移动的次数是n-1个盘两倍多一
b = 2 * a + 1;
a = b;
x--;
}
return b;
}
int main()
{
int n = 0;
//这里可以给个提示
printf("请输入一个数,该数为你设置的汉诺塔盘数");
scanf("%d", &n);
printf("%d", Hanlotta(n));
return 0;
}