zoukankan      html  css  js  c++  java
  • 3、递归

    3、递归

      3.1 基线条件和递归条件

        每个递归函数都有两部分:基线条件(base case)和递归条件(recursive case)。

        递归条件指的是函数调用自己,而基线条件则指的是函数不再调用自己,从而避免形成无限循环。

        代码清单3-1 递归

    # -*- coding:UTF-8 -*-
    def countdown(i):
        print i
        # 基线条件
        if i <= 0:
            return
        # 递归条件
        else:
            countdown(i-1)
    
    
    print countdown(5)

      3.2 栈

        栈是一种简单的数据结构。

        代码清单3-2 调用栈

    # -*- coding:UTF-8 -*-
    def greet(name):
        print "hello, " + name + "!"
        greet2(name)
        print "getting ready to say bye..."
        bye()
    
    
    def greet2(name):
        print "how are you, " + name + "?"
    
    
    def bye():
        print "ok bye!"
    
    
    greet("maggie")
    
    # result:
    # hello, maggie!
    # how are you, maggie?
    # getting ready to say bye...
    # ok bye!

         代码清单3-3 递归调用栈

    # -*- coding:UTF-8 -*-
    # 计算3!阶乘的递归函数
    
    
    def fact(x):
        if x == 1:
            return 1
        else:
            return x * fact(x-1)
    
    
    print fact(3)

        递归指的是调用自己的函数。

        每个递归函数都有两个条件“基线条件和递归条件。

        栈由两种操作:压入和弹出。

        所有函数调用都进入调用栈。

        调用栈可能很长,这将占用大量的内存。

  • 相关阅读:
    windows 获取用户的Sid的方法
    sql replace
    jquery ajax超时设置
    tomcat绑定域名
    .Net webservice动态调用
    JAVA SSH 框架介绍
    第一个Nodejs程序
    linux-CentOS6.4下安装oracle11g详解
    CentOS 6.5系统上安装MySQL数据库
    CentOS6.5安装tomcat7
  • 原文地址:https://www.cnblogs.com/Lamfai/p/10763334.html
Copyright © 2011-2022 走看看