#include
#include
#include
double num1(int num)//递归实现
{
if (num == 1)
{
return 1.0;
}
else if (num == 2)
{
return 2.0;
}
else
{
return num1(num - 1) + num1(num - 2);
}
}
double loop1(int num)//for循环实现
{
double num1 = 1;
double num2 = 2;
double res = 0;
for (int i = 0; i < num-2; i++)
{
res = num1 + num2;
num1 = num2;
num2 = res;
}
return res;
}
double loop2(int num)//while 循环实现
{
double num1 = 1;
double num2 = 2;
double res = 0;
while (num > 2)
{
res = num1 + num2;
num1 = num2;
num2 = res;
num--;
}
return res;
}
double loop3(int num)//do while 循环实现
{
double num1 = 1;
double num2 = 2;
double res = 0;
do
{
res = num1 + num2;
num1 = num2;
num2 = res;
num--;
} while (num > 2);
return res;
}
double loop4(int num)//goto 循环实现
{
double num1 = 1;
double num2 = 2;
double res = 0;
AA: if (num > 2)
{
res = num1 + num2;
num1 = num2;
num2 = res;
num--;
goto AA;
}
return res;
}
double loop5(int num)//数组实现
{
double a[50];
a[0] = 1;
a[1] = 2;
for (int i = 2; i < num; i++)
{
a[i] = a[i - 1] + a[i - 2];
}
return a[num-1];
}
void main()
{
for (int i = 3; i <= 10; i++)
{
printf("%d阶台阶有%.0f种走法\n", i, num1(i));
printf("%d阶台阶有%.0f种走法\n", i, loop1(i));
printf("%d阶台阶有%.0f种走法\n", i, loop2(i));
printf("%d阶台阶有%.0f种走法\n", i, loop3(i));
printf("%d阶台阶有%.0f种走法\n", i, loop4(i));
printf("%d阶台阶有%.0f种走法\n", i, loop5(i));
}
system("pause");
}
阅读(249) | 评论(0) | 转发(0) |