题目:(1)一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。求该青蛙跳上一个n 级的台阶总共有多少种跳法。
分析:当n = 1, 只有1中跳法;当n = 2时,有两种跳法;当n = 3 时,有3种跳法;当n = 4时,有5种跳法;当n = 5时,有8种跳法;
n | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
跳法 | 1 | 2 | 3 | 5 | 8 | 13 | 21 | 34 |
可以得出结论:
n<=2时,n等于跳法;
n>3时,跳法=fib(n-1)+fib(n-2);
类似于斐波那契数的求法;
采用递归的方法,当n较大时会运行很长的时间;
采用常规的方法,运行速度较快.
递归的方法:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int jump(int x)
{
if (x <= 2)
{
return x;
}
else
{
return jump(x - 1) + jump(x - 2);
}
}
int main()
{
int n = 0;
scanf("%d", &n);
int num = jump(n);
printf("%d", num);
return 0;
}
常规的方法:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int jump(int x)
{
int a = 1;
int b = 2;
int c = 0;
while (x>2)
{
c = a + b;
a = b;
b = c;
x--;
}
return c;
}
int main()
{
int n = 0;
scanf("%d", &n);
int num = jump(n);
printf("%d", num);
return 0;
}