[剑指Offer]笔记8.跳台阶 C++实现

Problem Description

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

Mentality

当台阶数是1时,只能有跳1阶这1种跳法;当台阶数是2时,有跳2次1阶、跳1次2阶这2种跳法;当台阶数是3时,若第一步跳1阶,则还剩2阶,就有2种跳法,若第一步跳2阶,则还剩1阶,就只有1种跳法,总共就是3种跳法,即前两种台阶数的情况之和。以此类推,n为台阶数,则f(n)为对应的跳法,有f(n)=f(n-1)+f(n-2),即本题是斐波那契数列的应用。只不过一开始的项是1和2。

Code (C++)

class Solution {
public:
    int Fibonacci(int n) {
        if(number<=2)
        	return number;
       	int ans(0),temp1(1),temp2(2);
        for(int i=2; i<number; i++){
        	ans=temp1+temp2;
        	temp1=temp2;
        	temp2=ans;
		}	
		return ans;
    }
};

已通过所有的测试用例,欢迎指正批评(´▽`ʃ♡ƪ)

发布了19 篇原创文章 · 获赞 10 · 访问量 1201

猜你喜欢

转载自blog.csdn.net/qq_38655181/article/details/105459598
今日推荐