zoukankan      html  css  js  c++  java
  • 爬楼梯的golang实现

    假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

    每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

    注意:给定 n 是一个正整数。

    输入: 2
    输出: 2
    解释: 有两种方法可以爬到楼顶。
    1.  1 阶 + 12.  2 阶
    
    输入: 3
    输出: 3
    解释: 有三种方法可以爬到楼顶。
    1.  1 阶 + 1 阶 + 12.  1 阶 + 23.  2 阶 + 1

    乍看这道题,以为是求解1和2的随机组合=n的问题,但是我们先来看看下面的表格:

    n没有2的情况有1个2的情况有2个2的情况有3个2的情况总数
    1 1       1
    2 1 1     2
    3 1 2     3
    4 1 3 1   5
    5 1 4 3   8
    6 1 5 6 1 13

    从表格看出其实是一个斐波那契数列,那么代码就很简单了

    //斐波那契数列
    func climbStairs(n int) int {
        sli := []int{1, 2, 3}
        if n <= 3 {
            return sli[n-1]
        }
        for i := 3; i < n; i++ {
            sli = append(sli, sli[i-1]+sli[i-2])
        }
        return sli[len(sli)-1]
    }
  • 相关阅读:
    今天学习的数组不是很懂
    今天的复习内容
    这是今天的作业
    总结,错误反思
    php 文件读取
    call_user_func函数
    plsql中调试函数 转
    oracle数据库中函数的递归调用
    关闭PdfReader右侧工具栏的方法
    Dev TreeList基本用法
  • 原文地址:https://www.cnblogs.com/TimLiuDream/p/10081624.html
Copyright © 2011-2022 走看看