剑指offer题目8:青蛙跳台阶

题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

解答思路

没想到还是斐波那契数列。。

青蛙在跳1级台阶的时候是1种跳法,跳2级台阶是2种跳法。
假设跳n级台阶是f(n)个跳法,那么青蛙的跳n级台阶的时候,设第1次跳的时候是跳了1级,那么剩下台阶是f(n-1)个跳法,第1次跳的时候是跳了2级,剩下台阶是f(n-2)个跳法。
那么f(n)=f(n-1)+f(n-2)

实现代码

class Solution {
public:
    int jumpFloor(int number) {
        int n = number;
        int i = 1;
    	int ret = 0;
    	int ret2 = 0;
    	int ret1 = 0;

    	if(n == 0 || n== 1 || n == 2) {
    		return n;
    	}

    	while(i <= n) {
    		if(i == 1) {
    			ret2 = 1;
    		} else if(i == 2) {
    			ret1 = 2;
    		} else {
    			ret = ret1 + ret2;
    			ret2 = ret1;
    			ret1 = ret;
    		}
    		++i;
    	}
    	return ret;
    }
};
posted @ 2019-03-27 10:34  {-)大傻逼  阅读(179)  评论(0)    收藏  举报
欢迎转载,转载请注明本文地址。