跳台阶
/*
一只青蛙一次可以跳上1级台阶,也可以跳上2级。
求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
*/
首先我们考虑最简单的情况。
如果只有1级台阶,那么显然只一种跳法。
如果有2级台阶,那就有两种跳法:一种是分两次跳,每次跳1级;另一种是一次跳2级。
f(n)=f(n-1)+f(n-2)
也就是斐波那契数列
#include <iostream> using namespace std; /* 一只青蛙一次可以跳上1级台阶,也可以跳上2级。 求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 */ // 实际上看着规律就是斐波那契数列 // 1,2,3,5,8 class Solution { public: int jumpFloor(int number) { if (number <= 0) return 0; else if(number <= 3) return number; int first = 1, second = 2, third = 0; for (int i = 3; i <=number; i++) { third = first + second; first = second; second = third; } return third; } }; int main(void) { Solution s; cout <<s.jumpFloor(5); return 0; }