zoukankan      html  css  js  c++  java
  • note 7 递归函数

    递归:程序调用自身
    形式:在函数定义有直接或间接调用自身

    阶乘:N!=123...N

    def p(n):
        x = 1
        i = 1
        while i <= n:
            x = x * i
            i = i + 1
        return x
    

    n!=(n-1)! * n
    ...

    兔子数列

    斐波那契数列


    def fib(n):
        if n == 1 or n == 2:
            return 1
        else :
            return fib(n - 1) + fib(n - 2)
    
    print fib(6)
    

    汉诺塔

    count = 0#步骤数    x**n - 1
    def hanoi(n,A,B,C):
        global count
        if n == 1:
            print 'Move',n,'from',A,'to',C
            count += 1
        else:
            hanoi(n - 1,A,C,B)
            print 'Move',n,'from',A,'to',C
            count += 1
            hanoi(n - 1,B,A,C)
    
    hanoi(5,'Left','Mid','Right')
    print count
    

    随机停车

    #随机停车
    import random
    
    def parking(low,high):
        if high - low < 1:
            return 0
        else :
            x = random.uniform(low,high - 1)
            return parking(low,x) + 1 + parking(x + 1,high)
    
    s = 0
    for i in range(1000):
        s += parking(0,5)
        
    print s / 10000.
    

    Renyi停车常数

    递归的时间开销

    递归的优劣分析

    优势strength

    它能使一个蕴含递归关系且结构复杂的程序简洁精炼,增加可读性
    特别是在难于找到从边界到解的全过程的情况下,如果把问题推进一步,其结构仍维持原问题的关系
    

    劣势weakness

    嵌套层次深,函数调用开销大
    重复计算
  • 相关阅读:
    KSTORE日常工作遇到问题总结
    调用bat文件执行java文件
    腾讯课堂十大Excel函数
    《将博客搬至CSDN》
    oracle 累加功能,累加百分比
    验证身份证是否合法
    远程登录修改密码
    二叉树的遍历
    nginx启动、重启、关闭
    状态模式-State-订单状态
  • 原文地址:https://www.cnblogs.com/OceanF/p/10774322.html
Copyright © 2011-2022 走看看