leetcode70 爬楼梯 Python

组合数学Fibonacci

例3.4.1   上楼梯问题)某人欲登上n级楼梯,若每次只能跨一级或两级,问他从地面上到第n级楼梯,共有多少种不同的方法?

)设上到第n级楼梯的方法数为an。分类统计,那么,第一步有两种可能:

(1) 跨一级,则余下的n1级有an1种上法;

(2) 跨两级,则余下的n2级有an2种上法。

由加法原理 

F1

F2

F3

F4

F5

F6

 

1

1

2

3

5

8

……

 

a1

a2

a3

a4

A5

 

 1 import math
 2 
 3 class Solution(object):
 4     def climbStairs(self, n):
 5         """
 6         :type n: int
 7         :rtype: int
 8         """
 9         n = n+1
10         if n <= 1:
11             return 1
12         if n == 2:
13             return 2
14         return int(1/math.sqrt(5) * (((1+math.sqrt(5))/2)**n-((1-math.sqrt(5))/2)**n))

 

转载于:https://www.cnblogs.com/woshizhizhang/p/10491990.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值