• 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)数据的结构形式是按递归定义的。(比如树的遍历,图的搜索,二分法查找等)

  • 相关阅读:
    NOIP知识点&&模板整理【更新中】
    qbxt DAY7 T4
    qbxt DAY7 T2
    qbxt DAY 6 T3 柯西不等式和拉格朗日不等式
    qbxt DAY4 T4
    qbxt DAY4 T3
    #98. 表达式计算 杂想
    扫描线入门学习笔记 (主要讲解代码实现)
    学OI要知道的基础知识(咕咕咕)
    主定理学习笔记(总结向)
  • 原文地址:https://www.cnblogs.com/zhangqigao/p/5462880.html
Copyright © 2020-2023  润新知