zoukankan      html  css  js  c++  java
  • 011 递归

    一:简单使用

    1.需求

      写一个简单的阶乘。

    2.程序

      这个程序主要的功能是,通过例子理解阶乘

    1 def factorial(n):
    2     if n==1:
    3         return 1
    4     else:
    5         return n*factorial(n-1)
    6 
    7 fact=factorial(5)
    8 print(fact)

    3.效果

      

    二:菲波那切数列

    1.说明

      1、1、2、3、5、8、13、21

      在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)

    2.程序

    1 ##1、1、2、3、5、8、13、21
    2 def fibonacci(n):
    3     if n==1 or n==2:
    4         return 1
    5     else:
    6         return fibonacci(n-2)+fibonacci(n-1)
    7 
    8 fib=fibonacci(8)
    9 print(fib)

    3.效果、

      

    三:汉诺塔

    1.抽象后的做法

      

    2.思路

      这里以函数的形参为出发点。

      将三个柱子(初始柱,过渡柱,目标柱)分别标记为A,B,C

      1.将初始柱上除最下面的圆盘以外的圆盘全部搬到过渡柱上;

      2.将初始柱上最下面的圆盘搬到目标柱上;

      3.将过渡柱上的圆盘全部搬到目标柱上。

    3.程序

     1 ##
     2 def hanoiTower(n,a,b,c):
     3     if n==1:
     4         print(a,'-->' ,c)
     5         return
     6     else:
     7         hanoiTower(n-1,a,c,b)
     8         print(a,'-->' ,c)
     9         hanoiTower(n-1,b,a,c)
    10 
    11 hanoiTower(3,'X','Y','Z')

    4.效果

      

  • 相关阅读:
    AcWing 143. 最大异或对
    分组异或
    Java面向对象的思维导图
    数组中超过一半的元素
    SQL带事务的存储过程添加功能
    分页存储过程MYSQL
    文件夹的压缩
    邮箱发送文件
    SQL万能存储过程分页
    Api反射泛型添加
  • 原文地址:https://www.cnblogs.com/juncaoit/p/9535057.html
Copyright © 2011-2022 走看看