python案例:用递归与非递归实现上台阶问题

题目:
假设你走台阶有两种方式,一种是一步迈两个台阶,一种是一步迈一个台阶,请问你上n个台阶一共有多少种方式

分析过程:
g(5)=g(4)+g(3)#3,4指的是走一步或者两步后剩余的步数
g(4)=g(3)+g(2)
g(3)=g(2)+g(1)
g(2)=2
g(1)=1

  1. 递归方式
def getNum(n):
    if n==2:
        return 2
    elif n==1:
        return 1
    return getNum(n-1)+getNum(n-2)
getNum(5)
  1. 非递归方式
def getNum(n):
    if n==2:
        return 2
    elif n==1:
        return 1
    a1=1
    a2=2
    a3=0
    while n>2:
        a3=a1+a2
        a1=a2
        a2=a3
        n=n-1
    return a3
getNum(5)

猜你喜欢

转载自blog.csdn.net/weixin_42839144/article/details/81367159
今日推荐