zoukankan      html  css  js  c++  java
  • python之递归实现

    一、递归函数

    概念:递归算法是一种直接或者间接的调用自身算法的过程。在计算机编写程序中,递归算法对解决一大类问题是十分有效的。

    特点:

    ①递归就是在过程或者函数里调用自身。

    ②在使用递归策略时,必须有一个明确的递归条件,称为递归出口。

    ③递归算法解题通常显得很简洁,但递归算法解题的效率较低。所以一般不倡导使用递归算法设计程序。

    ④在递归调用的过程当中系统的每一层的返回点、局部变量等开辟了栈来存储。递归函数次数过多容易造成栈溢出等。

       所以一般不倡导用递归算法设计程序。

    要求:

    递归算法所体现的"重复"一般有三个条件:

    ①每次在调用规模上都有所缩小(通常是减半)。

    ②相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次的输入)。

    ③在问题的规模极小时必须用直接接触解答而不再进行递归调用,因而每次递归调用都是有条件的(以规模未达到直接解答的大小为条件),

       无条件的递归调用将会成为死循环而不能正常结束。

     1 """非递归方式呈现"""
     2 sum = 0
     3 for obj in range(1,101):
     4     sum+=obj
     5 print sum
     6 
     7 """"1+2+3+...+100"""
     8 def foo(n):
     9     if n>0:return n+foo(n-1)
    10     if n<=0:return 0
    11 print foo(100)
    12 
    13 """阶乘"""
    14 def fac(n):
    15     if n==0 or n==1:
    16         return 1
    17     else:
    18         return n*fac(n-1)
    19 print fac(10)   

    递归算法一般用于解决三类问题:
    (1)数据的定义是按递归定义的。(比如Fibonacci函数)
    (2)问题解法按递归算法实现。(回溯)
    (3)数据的结构形式是按递归定义的。(比如树的遍历,图的搜索,二分法查找等)

  • 相关阅读:
    F查询和Q查询
    Django ORM 常用字段和参数
    Django的路由系统
    Django模板系统
    Django中的视图(view)
    Django应用app创建及ORM
    TP90,TP99,TP999,MAX含义
    TDD、BDD、ATDD、DDD 软件驱动开发模式比较
    liunx 安装chrome的方法
    nginx 反向代理mysql
  • 原文地址:https://www.cnblogs.com/zhangqigao/p/5462880.html
Copyright © 2011-2022 走看看