zoukankan      html  css  js  c++  java
  • python学习递归

    递归  函数调用自身,且有终止条件

      python默认递归层数为100

    可以修改层数  

      import sys

      sys.setrecursionlimit(1000)

    递归求阶乘

    ------------1迭代

      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))

    -------------2递归

    def factorial(n):
      if n == 1:

        return 1

      else:

        return n * factorial(n-1)

    number = int(input('请输入一个整数'))

    result = factorial(number)

    print('%d 的阶层是%d' % (number, result))

    递归有危险性,因为有栈操作,消耗内存,所以一定要传出去,归回值

    斐波那契数列

    F(n)=F(n-1)+F(n-2)  F(1)=1  F(2)=1

    ----------1迭代

    def factorial(n):
      a = 1
      b = 1
      if n>=1:
        print('1 --> 1 ')
      if n>=2:
        print('2 --> 1 ')
      if n>=3:
        for i in range(1, n-1):
          c = a + b
          print('%d --> %d '%(i+2, c))
          a = b
          b = c
          return c
      else:
        return 1
    number = int(input('输入一个数:'))
    result = factorial(number)
    print('%d 的斐波那契数是 %d'%(number, result))

    --------------2递归

    def fab(n):
      if n <1:
        print('输入有误')
        return -1

      if n == 1 or n == 2:
        return 1
      else:
        return fab(n-1) + fab(n-2)
    number = int(input('输入一个数:'))
    result = fab(number)
    if result != -1:
      print('%d 的斐波那契数是 %d'%(number, result))

    递归很好写,但很费内存,比如35以上就需要一段时间才能计算出来

    汉诺塔游戏算法

    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')

  • 相关阅读:
    ckeditor(在线文本编辑器)使用教程
    一张图轻松搞懂javascript event对象的clientX,offsetX,screenX,pageX区别
    正则表达式
    关于padding与margin的区别
    伪类link,hover,active,visited,focus的区别
    运动框架
    scroll、offset和client的区别
    如何给Sublime安装插件
    获取行间样式与在js中设置样式
    寻找下一个同级元素节点
  • 原文地址:https://www.cnblogs.com/jdzhang1995/p/10246554.html
Copyright © 2011-2022 走看看