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上。

    利用递归来写:

  • 相关阅读:
    redis 基本操作-python 使用redis-手机验证接口-发送短信接口
    登录-注册页面修订
    10-29 课堂笔记
    git 协作开发
    git 常规使用
    luffy-city 基础环境搭建(至轮播图前后台交互实现)-步骤目录
    偏移分页-游标(加密)分页-自定义过滤器-第三方过滤器插件(django-filter)
    drf 大总结
    739. Daily Temperatures
    617. Merge Two Binary Trees
  • 原文地址:https://www.cnblogs.com/dorra/p/8367417.html
Copyright © 2011-2022 走看看