zoukankan      html  css  js  c++  java
  • Python学习笔记——递归函数

    1.设置递归层数

    #设置recursion函数的层数,默认是100层
    import sys
    sys.setrecursionlimit(10000)
    

    2. 阶乘

    #定义一个阶乘函数
    def factorial(n):
        result = n
        for i in range(1,n):
            result *= i
        return result
    number = int(input('请输入一个正整数:'))
    result = factorial(number)
    print("%d的阶乘是:%d" % (number,result))
    
    请输入一个正整数:5
    5的阶乘是:120
    
    #递归
    def fac(n):
        if n == 1:
            return 1
        else:
            return n * fac(n-1)
    numbers = int(input('请输入一个正整数:'))
    results = fac(numbers)
    print("%d的阶乘是:%d" % (numbers,results))
    
    请输入一个正整数:5
    5的阶乘是:120
    

    3.斐波那契数列

    def fab(n):
        n1 = 1
        n2 = 1
        n3 = 1
        
        if n < 1:
            print('输入有误')
            return -1
        
        while (n-2) > 0:
            n3 = n2 + n1
            n1 = n2
            n2 = n3
            n -= 1
            
        return n3
    
    num = fab(20)
    if num != -1:
        print(num)
    
    6765
    
    #递归函数效率会降低
    def fab2(n):
        if n < 1:
            print('输入有误!')
            return -1
        if n == 1 or n == 2:
            return 1
        else:
            return fab2(n-1) + fab2(n-2)
    num2 = fab(20)
    if num2 != -1:
        print(num2)
    
    6765
    

    4. 汉诺塔

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

    汉诺塔

    #该函数参数的意义为:利用y将n个盘子从x移动到z
    def hanoi(n, x, y, z):
        if n == 1:
            print(x, '-->', z)
        else:
            hanoi(n-1, x, z, y)#将前n-1个盘子从x移到y上
            print(x, '-->', z)#将最底下的最后一个盘子从x移到z上
            hanoi(n-1, y, x, z)#将y上的n-1个盘子移到z上
    n = int(input('请输入汉诺塔的层数:'))
    hanoi(n, 'x', 'y', 'z')
    
    请输入汉诺塔的层数:3
    x --> z
    x --> y
    z --> y
    x --> z
    y --> x
    y --> z
    x --> z
    
  • 相关阅读:
    我的git笔记
    我的 Sublime Text 2 笔记
    在Windows系统配置Jekyll
    纯CSS3打造七巧板
    JavaScript原型之路
    基于Grunt构建一个JavaScript库
    How React Works (一)首次渲染
    hadoop2.4 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
    pyinstaller打包python源程序访问hive
    hadoop balance均衡datanode存储不起作用问题分析
  • 原文地址:https://www.cnblogs.com/nigream/p/11251107.html
Copyright © 2011-2022 走看看