美文网首页码农的世界
Python算法-爬楼梯与递归函数

Python算法-爬楼梯与递归函数

作者: 电动猫 | 来源:发表于2019-05-19 15:36 被阅读54次
上周学校刚好开设了Python课,正好对Python的学习做一个归纳总结。这是老师布置的第一个项目:

假设一个孩子在爬楼梯,每次可以爬一个或者两个楼梯,一共有多少个方法能爬上去呢?
n为整数 1<=n<=2200

可以看出来的是,该题可以用斐波那契数列解决。
楼梯一共有n层,每次只能走1层或者2层,而要走到最终的n层。不是从n-1或者就是n-2来的。
F(1) = 1
F(2) = 2
F(n) = F(n-1) + F(n-2) (n>=3)

方法一:使用递归函数

def runupstairs(t, n):
    if n == 1:
        return 1
    if n == 2:
        return 2
    else:
        return t.runupstairs[n - 1] + t.runupstaris[n -2]

这是递归写法,但是会导致栈溢出。在计算机中,函数的调用是通过栈进行实现的,如果递归调用的次数过多,就会导致栈溢出。
针对这种情况就要使用方法二,改成非递归函数。

方法二:

  def runupstairs(t, n):
      if n == 1:
          return 1
      if n == 2:
          return 2
      argu = [1, 2]
      for i in range(2, n):
          argu.append(argu.append[-1] + argu.append[-2])
      return argu[-1]

将递归进行改写,实现循环就不会导致栈溢出

相关文章

  • Python算法-爬楼梯与递归函数

    上周学校刚好开设了Python课,正好对Python的学习做一个归纳总结。这是老师布置的第一个项目:假设一个孩子在...

  • Python语言程序---代码复用与函数递归(二)

    Python语言程序---代码复用与函数递归(二) 函数递归 在函数定义中,调用函数自身的方式就是递归。 递归并不...

  • 一、算法

    目标 递归算法查找算法算法分析十大排序算法 递归算法 什么是递归递归,在数学与计算机科学中,是指在函数的定义中使用...

  • 数据结构与算法(8)-栈与递归的关系

    数据结构与算法(7)-栈 递归: 在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。也就是说,递归算法是...

  • Java递归算法详解

    递归算法是一种直接或者间接调用自身函数或者方法的算法。Java递归算法是基于Java语言实现的递归算法。递归算法的...

  • 递归算法

    递归算法思想 特点 递归过程一般通过函数或子过程来实现。 递归算法在函数或子过程的内部,直接或间接地调用自己的算法...

  • Python精简入门学习(十)

    Python精简入门学习之递归函数-递归 -递归 -如图所示

  • 斐波那契数列与Python的尾递归蹦床 连载【3】

    ……续上回斐波那契数列与Python的尾递归蹦床连载【2】 6. 递归引用名的“不变”化 递归函数就是在函数中还要...

  • 数据结构第二季 Day13 递归 、斐波那契数列

    一、初识递归 1、递归的定义?递归是算法思想或者算法策略吗? 递归的定义:函数(方法)直接或者间接调用自身。 严格...

  • Java中的递归

    什么是递归? 函数直接或间接调用自身的过程称为递归,而相应的函数称为递归函数。使用递归算法,可以很容易地解决某些问...

网友评论

    本文标题:Python算法-爬楼梯与递归函数

    本文链接:https://www.haomeiwen.com/subject/igcqzqtx.html