青蛙跳台阶问题

青蛙跳台阶问题

2 min read

问题描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。

思路

f(n)表示青蛙跳上n阶的跳法,那么就有f(0)=1f(1)=1f(2)=2。如果青蛙要跳到第3阶,那么有两种方式:

于是有f(3)=f(2)+f(1),以此类推,青蛙跳到第n阶有两种方式:

所以,我们可以得出:f(n)=f(n-2)+f(n-1)。于是这个问题的本质就类似于求斐波那契数列。

Python实现

class Solution(object):
    def __init__(self):
        self.f_list = [1,1]
    def numWays(self, n):
        if len(self.f_list)<n+1:
            self.get_f_list(n)
        return self.f_list[n]
    def get_f_list(self,n):
        for i in range(n+1-len(self.f_list)):
            self.f_list.append(self.f_list[-1]+self.f_list[-2])

前一篇

机器人运动范围问题

后一篇

Ubuntu关闭和开启图形用户界面