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
嵌套层次深,函数调用开销大
重复计算
note 7 递归函数的更多相关文章
- Python学习札记(十四) Function4 递归函数 & Hanoi Tower
reference:递归函数 Note 1.在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. eg.计算阶乘: #!/usr/bin/env python3 def ...
- 三星Note 7停产,原来是吃了流程的亏
三星Note 7发售两个月即成为全球噩梦,从首炸到传言停产仅仅47天.所谓"屋漏偏逢连天雨",相比华为.小米等品牌对其全球市场的挤压.侵蚀,Galaxy Note 7爆炸事件这场连 ...
- 《Note --- Unreal --- MemPro (CONTINUE... ...)》
Mem pro 是一个主要集成内存泄露检测的工具,其具有自身的源码和GUI,在GUI中利用"Launch" button进行加载自己待检测的application,目前支持的平台为 ...
- 《Note --- Unreal 4 --- Sample analyze --- StrategyGame(continue...)》
---------------------------------------------------------------------------------------------------- ...
- javascript中的递归函数
正常的递归函数如下: function factorial(num){ ){ ; }else{ ); } } 这个函数表面看起来还ok,但如果我们执行下面代码就会出错. var jenny = fac ...
- [LeetCode] Ransom Note 赎金条
Given an arbitrary ransom note string and another string containing letters from all th ...
- Beginning Scala study note(9) Scala and Java Interoperability
1. Translating Java Classes to Scala Classes Example 1: # a class declaration in Java public class B ...
- Beginning Scala study note(8) Scala Type System
1. Unified Type System Scala has a unified type system, enclosed by the type Any at the top of the h ...
- Beginning Scala study note(7) Trait
A trait provides code reusability in Scala by encapsulating method and state and then offing possibi ...
随机推荐
- django 模型操作
# 添加 Fruit.objects.create(name='Apple') # 更新 UserProfile.objects.filter(user=admin).update(**{'onlin ...
- while循环 格式化输出 运算符 编码
一.while循环 1.基本结构 while 条件: 循环体 流程: 判断条件是否为真. 如果真, 执行代码块. 然后再次判断条件是否为真 .如果真继续执行代码块.... ...
- java基础——字符串中的反转Reverse问题(面试必备)
由于研究了关于字符串(String)的问题,今年就在这里总结一下,首先说一下有关于面试,我想的是,需要一定的技能,比方说,大家想到这个反转问题,肯定能说上了,只不过是你说的一般人都知道,要想在面试中更 ...
- phoneshop cs6破解
一.以“试用”方式安装photoshop: 二.下载amtlib.dll破解文件,密码:ubx2: 三.备份photoshop目录下的amtlib.dll文件,将下载的amtlib.dll文件拷贝到p ...
- JVM学习二:垃圾收集(Garbage Collection,GC)机制
JVM的GC分为两个主要部分,第一部分是判断对象是否已死(堆内存的垃圾回收占主要部分,方法区(metaspace)的内存回收在最新的官方文档中未给出详细解释,暂时不做讨论范围),第二部分是对内存区进行 ...
- ansible 自动化运维
Ansible 自动化运维 ansible安装epel #yum list all *ansible*#yum install *ansible*#yum info ansible#rpm -ql a ...
- MongoDB慢查询性能分析
最近,长期运营后的港台服出现一个问题,web充值很慢,用gm指令查询玩家信息也很慢.最后定位到MongoDB查询也很慢. 刚开始定位的时候,运营SA直接查指定的玩家,并反映很慢,就猜测是索引的问题 ...
- 无空格字符串的break-all的性能问题
- oracle控制文件问题
下午时连接数据库突然发现连不上了,监听报错找不到服务,于是登录数据库所在服务器,查看监听状态,oracle:lsnrctl status 监听状态正常,登入数据库查看[oracle@frkdb1 ~] ...
- python pip安装其他模块到中途失败问题
当网速很差时,pip安装到中途总是出现一大片红色然后失败.而且往往安装下载很久,失败了就要从新开始,失败如下 就是,当你出现这个错误Could not find a version that sati ...