剑指offer编程练习——跳台阶

来源:互联网 发布:新手如何装修淘宝店铺? 编辑:程序博客网 时间:2024/05/18 01:18

最近在练习一些编程题,也有想法慢慢开始自己的博客记录与分享学习的习惯,暂时先用CSDN博客开始吧~

题目描述

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

解释:其实这就是一道考察斐波那契数列(递归)题目,在初高中数学竞赛的简单题中也很常见。


public class Solution {    public int JumpFloor(int target) {       if (target>0)       {           if (target==1||target==2)               return target;           else               return JumpFloor(target-1)+JumpFloor(target-2);       }       return 0;              }}

class Solution {public:    int jumpFloor(int number) {        if(number<=0)            return 0;        else if (number==1)            return 1;            else if(number==2)            return 2;            else            return jumpFloor(number-1)+jumpFloor(number-2);    }};

但是递归方法效率较低;

我们可以考虑迭代方法直接计算,时间复杂度更低:

class Solution {public:    int jumpFloor(int number) {        if(number == 0)            return 0;                 int f1 = 1, f2 = 2;        for(int i = 1; i < number; i++){            f2 += f1;            f1 = f2 - f1;        }        return f1;    }};

还有很多其他方法,不多做探讨

1 0
原创粉丝点击