swift-爬楼梯问题-力扣题库(斐波拉契数列)

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

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

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

示例 1:

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

示例 2:

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

看题如果看不出来此规律可以自己往后再多举几个数字,会发现其实就是求斐波拉契数列。这里直接是递归的解题,那些不用递归低性能的就不列举了,废话不多说,直接上解题答案。

解题方法一:
用递归,但是这种在数值大的时候会比较耗时,不推荐使用
func climbStairs(_ n: Int) -> Int {
    if n <= 1 {
        return 1
    } else if n == 2 {
        return 2
    } else {
        return climbStairs(n-1) + climbStairs(n-2)
    }
}
解题方法一:
用递归推荐用这个方法哦~ 
func climbStairs(_ n: Int) -> Int {
    return Fibonacci(n, 1, 1)
} 

func Fibonacci(_ n:Int, _ a:Int, _ b:Int) -> Int {
    if n <= 1 {
        return b
    }
    return Fibonacci(n-1, b, a+b)
}

如果有更好的算法,请在评论留言哦,一起学习,一起进步。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。