zoukankan      html  css  js  c++  java
  • Python3基础——递归

    递归函数

    如果一个函数在内部调用自身本身,这个函数就是递归函数。

    递归函数的优点是定义简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。

    使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。python3默

    认递归的深度是100,如果想要更改递归深度,可以导入sys模块,设置递归深度最大值。

    import sys

    sys.setrecursionlimit(1000)

    递归的使用:

     1、求阶乘

    n! = 1 x 2 x 3 x ... x n

    def fact(n):
        if n==1:
            return 1
        return n * fact(n - 1)
    >>> fact(5)
    120

    2、汉诺塔

    请编写move(n, a, b, c)函数,它接收参数n,表示3个柱子A、B、C中第1个柱子A的盘子数量,然后打印出把所有盘子从A借助B移动到C的方法,例如:

    3、斐波那契数列

    Fibonacci数列为:0、1、1、2、3、5、8、13、21......

    数列第一项为0,第二项为1,从第三项开始,每一项为相邻前两项之和。

    用递归的方法来定义:

    • F(0) = 0 
    • F(1) = 1
    • F(n) = F(n-1) + F(n-2) , n>=2

  • 相关阅读:
    数据挖掘:基本概念理解
    Linux:数据库服务(Mysql安装及链接、远程链接、genelog)
    Linux:WebServer(Nginx 虚拟主机配置与伪静态实现)
    Linux:WebServer(Apacge)
    单例和多线程
    Redis注册成服务
    Redis基础学习
    sqlserver查询使用with(nolock)详解
    JAVA设计模式-策略模式
    JAVA设计模式-代理模式
  • 原文地址:https://www.cnblogs.com/huluwahaha/p/7494003.html
Copyright © 2011-2022 走看看