zoukankan      html  css  js  c++  java
  • Python练习:关于递归的经典实例设计

    (一)裴波拉契数列

    利用递归算法获得裴波拉契数列前N个值的结果:

     1 #裴波拉契数列,通过递归计算
     2 def fb(n):
     3     if n <=0:
     4         res = 0
     5     elif n ==1:
     6         res = 1
     7     elif n ==2:
     8         res = 1
     9     else:
    10         res = fb(n-1) + fb(n-2)
    11     return res
    12 
    13 for i in range(1, 20):
    14     print(fb(i), end=' ')
    15 print('
    end')
    View Code

    (二)汉诺塔(Hanoi Tower)

    汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。
    大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。问应该如何操作?

    利用递归算法取得操作方法的最佳结果:

     1 '''
     2 汉诺塔(Hanoi Tower)问题,问应该如何操作?
     3 '''
     4 def hanoi(n, a, b, c):
     5     if n == 1:
     6         print( a, " -> ", c )
     7     elif n == 2:
     8         print( a, " -> ", b )
     9         print( a, " -> ", c )
    10         print( b, " -> ", c )
    11     else:
    12         hanoi( n-1, a, c, b )
    13         print( a, " -> ", c )
    14         hanoi( n-1, b, a, c )
    15     return None
    16 
    17 
    18 n = 4
    19 print('移动次数:{0}'.format(2**n-1))
    20 hanoi( n,'A','B','C')
    View Code
  • 相关阅读:
    LCM与GCD算法
    LCS,LIS,LICS算法
    高精度算法(C/C++)
    SystemTap
    VMware15下解决Ubuntu18.04没有网络连接问题
    Git ssh-key 配置问题
    Ubuntu18.04更换国内源
    sql 错误日志存储路径设置
    资源
    System.Data.DataTable 基本方法
  • 原文地址:https://www.cnblogs.com/violetchan/p/10103210.html
Copyright © 2011-2022 走看看