索引请参考:系列目录
题目:
- 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级台阶共有多少总跳法?
- 例:输入 1 输出 1
- 输入3 输出 3
- 输入5 输出 8
分析:
- 分析题目规律:
- 1级 输出 1
- 2级 输出2
- 3级 输出3
- 4级 输出5
- 5级 输出 8
- 6级 输出13
- 综上考虑,该规律符合斐波那契数列的规律
具体算法:
int jumpFloor(int number) {
int result[2] = {1,2};
if(number < 3)
return result[number -1];
int Fn,Fn_1 = 2,Fn_2 = 1;
for(int i = 3;i <= number; ++i)
{
Fn = Fn_1 + Fn_2;
Fn_2 = Fn_1;
Fn_1 = Fn;
}
return Fn;
}
牛客运行结果:
评注:这道题虽然看似简单,但是也在一定程度上映射出来现在公司真题的考试趋势,他们不单单只把一些算法题干告知应试者,而实通过一层外衣来粉饰这个算法。该算法巧妙的将青蛙跳台阶问题转化成了斐波那契数列,而且将斐波那契数列的算法做了进一步的优化(具体优化思路请参考上一篇🔗求斐波那契额数列第n项)