递归:程序调用自身

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

阶乘: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 递归函数的更多相关文章

  1. Python学习札记(十四) Function4 递归函数 & Hanoi Tower

    reference:递归函数 Note 1.在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. eg.计算阶乘: #!/usr/bin/env python3 def ...

  2. 三星Note 7停产,原来是吃了流程的亏

    三星Note 7发售两个月即成为全球噩梦,从首炸到传言停产仅仅47天.所谓"屋漏偏逢连天雨",相比华为.小米等品牌对其全球市场的挤压.侵蚀,Galaxy Note 7爆炸事件这场连 ...

  3. 《Note --- Unreal --- MemPro (CONTINUE... ...)》

    Mem pro 是一个主要集成内存泄露检测的工具,其具有自身的源码和GUI,在GUI中利用"Launch" button进行加载自己待检测的application,目前支持的平台为 ...

  4. 《Note --- Unreal 4 --- Sample analyze --- StrategyGame(continue...)》

    ---------------------------------------------------------------------------------------------------- ...

  5. javascript中的递归函数

    正常的递归函数如下: function factorial(num){ ){ ; }else{ ); } } 这个函数表面看起来还ok,但如果我们执行下面代码就会出错. var jenny = fac ...

  6. [LeetCode] Ransom Note 赎金条

    
Given
 an 
arbitrary
 ransom
 note
 string 
and 
another 
string 
containing 
letters from
 all 
th ...

  7. 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 ...

  8. 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 ...

  9. Beginning Scala study note(7) Trait

    A trait provides code reusability in Scala by encapsulating method and state and then offing possibi ...

随机推荐

  1. [转] CMake

    转载地址:https://www.cnblogs.com/lidabo/p/7359422.html cmake 简介 CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装( ...

  2. Shell编程(2)

    1 (1) (2) (3) 一.二都是显示数组所有元素,*是作为一个长字符串输出,@是作为数组一个一个输出 三.四都是输出数组的长度 五.六都是输出数组中第一个元素的长度 (4) unset是name ...

  3. Xcode注释转文档appledoc使用

    参考了一些大神的方法总算成功了记录一下少走弯路 1:安装appledoc 使用终端下载: 命令行: git clone git://github.com/tomaz/appledoc.git cd . ...

  4. stack.isEmpty()和empty()

    public class Stack<E> extends Vector<E> 可以看到Stack类继承了Vector类 这个是stack类里面的方法: /** * Tests ...

  5. 安装Feflow遇取的问题

    http://www.feflowjs.org/zh-cn/docs/ 在安装 npm install -g feflow-cli 是遇到这要一个问题 i C:\Program Files (x86) ...

  6. parallel::ForkManager

    use Parallel::ForkManager; my $MAX_PROCESSES=10;   #申明最大进程数(一次创建的进程越多,越耗内存): my $pm = new Parallel:: ...

  7. CSS背景样式和列表样式

    background-color 设置元素的背景颜色 background-image 把图像设置为背景 background-position 设置背景图像的起始位置 background-atta ...

  8. Vue原理--双向数据绑定

    MVVM MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态 ...

  9. DashBoard创建各种表(一)

    创建透视表 1.首先需要创建一个DashBoard,然后点击开始导航栏中的透视,创建一个透视表,透视表可以交叉式的显示报告,让我们可以更直观的看到多维数据. 2.把CategroyName和Categ ...

  10. vscode 最新中文设置

    切换中文 首先看商店里有没有chinese language那个中文插件. 在ctrl + shift +p 搜索configure language,然后配置locale如下即可配置中文.