哇咔咔!同学给我来了个题目,嘲讽我能不能想出来代码量最小的方法,
当然,我白天的时候上班没时间思索,回家第一件事就是打开电脑想这个问题。题目如下:
爬楼梯,假设你正在爬楼梯,需要 n 步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶?

遇到这种问题,肯定先思想原理啦,刚开始是用手指头笔画,当我从第一根手指开始计算 算到第四根手指(相当于题目中第四层楼梯)的时候,我发现第四根手指的方法在第一次走一步的时候剩下的走法跟第三根手指一摸一样,唯一的区别就是当第一次走两步,那么剩下的方法加上第三根方法的总数就可以了。

上面这段话能理解的就理解,没理解明白的看下图:

可以清楚的看到四层楼梯的时候他以1开头的部分方法数等于三层步数总和,多出来的也就是2开头的部分,这个时候再去找规律就很简单了,2开头的也就是两层楼梯的总和,所以第四层楼梯走的方法数等于第三层+第二层,根据这个规律敲写代码,当然就很简单了。

public static void main(String[] args) {for(int n =0;n<11;n++){int count = 0;count = func(n+1);System.out.println("楼梯数:"+n+",方法数:"+count);}}public static int func(int i){if(i==2){return 2;}else if(i==1){return 1;}else if(i==0){return 0;}else{return func(i-1)+func(i-2);}}

再加上一个0的时候的特例,就可以算出结果了。
结果如下:

爬楼梯,假设你正在爬楼梯,需要 n 步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶?相关推荐

  1. 楼梯有n个台阶,一共有多少种上楼的方法?

    楼梯有n个台阶,上楼可以一步上1阶,也可以一步上两阶.一共有多少种上楼的方法? 一.前言 看到这么个题目时,一脸懵逼,不知道说的啥意思,然后就多读了两边题目发现,如果有一阶楼梯,那你就一步就上去了,也 ...

  2. leetcode | 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

    假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出: 2 解释: 有两 ...

  3. 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

    爬楼梯 假设你正在爬楼梯.需要 n 阶你才能到达楼顶.每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 动态规划法 class Solution:def climbStairs( ...

  4. 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?实现 int sqrt(int x) 函数。

    今天我们来爬一爬楼梯. 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 ...

  5. 爬楼梯问题C++假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

    力扣题目爬楼梯 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n = 2 输出:2 解释:有两种方法可以爬到 ...

  6. 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

    假设你正在爬楼梯.需要 n 阶你才能到达楼顶.每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 示例1: 输入:n = 2 输出:2 解释:有两种方法可以爬到楼顶. 1. 1 阶 ...

  7. 70. 爬楼梯:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

    题目描述 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n = 2 输出:2 解释:有两种方法可以爬到楼顶. ...

  8. 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?(PHP 递推,动态规划)

    假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 递推规则详解 在一个2XN的长方形方格中铺满1X ...

  9. 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。

    假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例: 我在网上看到很多类似的题,但是发现大多数 ...

最新文章

  1. CentOS配置SSH单向无密码访问
  2. KubeNode:阿里巴巴云原生 容器基础设施运维实践
  3. H3C 2126 限速后的问题
  4. axios nodejs 上传图片_vue项目中使用axios上传图片等文件操作
  5. 深入研究 Mini ASP.NET Core,看看 ASP.NET Core 内部到底是如何运行的
  6. Objective-C 的OOP(下)-类(static)方法、实例方法、overwrite(覆写)、属性(property)...
  7. 典型案例:Bug 9776608-多个用户使用错误密码登录同一个用户而造成的用户无法登录异常...
  8. html5 开发工具_前端HTML5开发工具有哪些呢?
  9. python 发送 smtp
  10. 【最佳实践】如何搭建反向代理服务访问OSS资源?
  11. QQ影音播放.flv文件只有声音没有画面解决办法
  12. go get失败时怎么办(golang.org/x/crypto/md4为例)
  13. C++ 代码整洁之道
  14. 反激式开关电源理论与原理解析
  15. 关于Hilbert矩阵的几道编程题
  16. Tokenized的设计哲学(三)
  17. 【FreeSwitch开发实践】使用SIP客户端Yate连接FreeSwitch进行VoIP通话
  18. App裂变活动多种玩法解析
  19. FND MESSAGE的用法
  20. 微处理器基本功能及主要性能指标

热门文章

  1. CentOS 7 最小安装后的 简易桌面安装
  2. linux安装mysql8.11_Ubuntu安装MySQL任意版本(18.04亲测)
  3. HTML标记【图片的使用】!
  4. 转:阿里CEO张勇:领导者要善于“从后排把人往前拨”
  5. python爬虫-源码
  6. android ble peripheral,android5.0(Lollipop) BLE Peripheral牛刀小试
  7. 打造Altium Designer 3D封装库
  8. Python-自动化测试之接口基础
  9. 【C语言指针题】编写函数实现在任意行、任意列的二维数组中寻找鞍点,行、列数均有主调函数传入。
  10. 竞赛排名_纪中1743_模拟