zoukankan      html  css  js  c++  java
  • Python入门笔记(四)

    递归

    递归的举例:

    汉诺塔游戏:

     

    树 :

    谢尔宾斯基三角形:

    递归自拍:

    如下是一个递归函数,但是调用它的话会一直循环直至消耗掉所有的内存,只有按ctr+c才会停止执行。

    但是,如上,它会报错,Python3出于善意的保护,Python3对于递归的默认深度的设置是100层(Python2是1000层左右)。不过若是写网络爬虫工具,有时候不止100层,那么你可以自己设置一下递归的深度。

    设置递归的深度可以通过下面的方法:

    例题:写一个求阶乘的函数(正整数阶乘是指从1乘以2乘以3乘以4一直乘到所要求的数)

    非递归的方法:

     

    用递归的方法:

     

    斐波那契(Fibonacci)数列的迭代实现

    1123581321345589144

    用函数来表示:

     

    使用迭代的方法:

     

    使用递归的方法:

     

    随着数字逐渐增大,迭代比递归更快。

    递归求解汉诺塔

    举例:64个盘

    对于这个游戏的玩法,我们可以简单分为三个步骤:

    (1)将前63个盘从X移动到Y上;

    (2)将最底层的第64个盘子从X移动到Z上;

    (3)将Y上的63个盘移动到Z上。

    问题一:将X上的63个盘子借助Z移动到Y上;

    问题二:将Y上的63个盘子借助X移动到Z上。

    问题一(将X上的63个盘子借助Z移动到Y上)可拆解为:

    (1)将前62个盘从X移动到Z上;

    (2)将最底层的第63个盘子移动到Y上;

    (3)将Z上的62个盘移动到Y上。

    问题二(将Y上的63个盘子借助X移动到Z上)可拆解为:

    (1)将前62个盘从Y移动到X上;

    (2)将最底层的第63个盘移动到Z盘上;

    (3)将X上的62个盘移动到Y上。

    利用递归来写:

  • 相关阅读:
    Django Admin 管理工具
    老男孩培训机构老师的博客
    pycharm版本选择并安装
    Linux命令-自动挂载文件/etc/fstab功能详解
    django urls路由匹配分发
    django templates模板
    Django models模型
    django views视图函数
    JDK与JRE、JVM三者间的关系及JDK的安装部署
    django 第一个项目测试
  • 原文地址:https://www.cnblogs.com/dorra/p/8367417.html
Copyright © 2011-2022 走看看