int fac(int n)
{
if (n - 1 != 0)
return n * fac(n - 1);
else
return 1;
}
int main()
{
int n = 0;
scanf("%d", &n);
printf("%d\n", fac(n));
return 0;
}
//int main()
//{
// int n = 0;
// sacnf("%d", &n);
// int i = 0;
// int ret = 1;
// //迭代
// for (i = 1; 1 <= n; i++)
// {
// ret = ret * i;
// }
// printf("%d\n", ret);
//
//}
//int count = 0;
// 递归可以求解,但效率太低
//int Fib(int a)
//{
// if (a == 3)
// count++;//统计第3个菲波那契数的计算机次数
// if (a > 2)
// return Fib(a - 1) + Fib(a - 2);
// else
// {
// return 1;
// }
//}
//
//
//int main()
//{
// int n = 0;
// scanf("%d", &n);
//
// printf("%d\n", Fib(n));
// printf("count=%d\n", count);
// return 0;
//}
//迭代
int main()
{
int a = 1;
int b = 1;
int c = 0;
int n = 0;
int i = 0;
scanf("%d", &n);
if (n > 2)
{
for (i = 0; i < n - 2; i++)
{
c = a + b;
a = b;
b = c;
}
printf("%d\n", c);
}
else
printf("1\n");
return 0;
}
汉诺塔问题求解
#include <stdio.h>
int take(int a)
{
while (a > 1)
{
return 2 * take(a - 1) + 1;
}
return 1;
}
int main()
{
int n = 0;
scanf("%d", &n);//有n个盘子在A柱上面
int d=take(n);
printf("%d\n",d);
return 0;
}