la función Guía de aprendizaje: Al utilizar Python para mejorar la eficiencia del mecanismo de circulación en lugar de una función recursiva

En este artículo se presenta el conocimiento relevante para mejorar la eficiencia del uso del mecanismo de bucle de Python en lugar de funciones recursivas, te presentamos con gran detalle, tiene un cierto valor para las referencias, un amigo en necesidad con la referencia
número de Fibonacci

Ese año, el problema típico recursiva, número de Fibonacci, ¿recuerda?

def fib(n):
  if n==1 or n==2:
    return 1
  else:
    return fib(n-1)+fib(n-2)

Por supuesto, con el fin de robustez del programa, además de tratar ... excepto ...

def fib(n):
  if isinstance(n, int):
    print('兄弟,输入正整数哈')
    return
  try:
    if n==1 or n==2:
      return 1
    elif n <= 0:
      print('兄弟别输入0或负数呀')
    else:
      return fib(n-1)+fib(n-2)
  except RecursionError:
    print('兄弟,超过了最大递归深度'

Sí, sin importar la hora o la complejidad del espacio, la recursividad está trabajando realmente no ha! Se trata de una formulación recursiva:

def fib(n):
  if n==1 or n == 2:
    return 1
  a, b = 1, 1
  for i in range(2, n):
    a, b = b, a+b
  return b

Me explico un poco tres puntos:

¿Por qué es el intervalo (2, n), porque el número de Fibonacci comienza en 1, de modo fib (n) es la n primeros términos de la cantidad de columnas
porque los dos primeros son 1, por lo que cortar dos para el rango (2 , n) (n-2 veces a ciclo)
a, b = b, donde a + b que podría haber confundido me brevemente, las variables son generalmente Python intérprete será tratada como una tupla separada por comas directamente,
y porque , intérprete realiza primero el lado derecho de la ecuación, por lo que este es equivalente a una tupla desembalaje
a, b = b, a + b es la esencia de esta declaración es que en el lado derecho de la ecuación b considerará fib (n-2), considerado como el a + b fib (n-1)
triángulo de Pascal

Del mismo modo, el primero en escribir una escritura recursiva (aquí no considero circunstancias especiales, y por un tiempo limitado):

def YH_tri(a, b):
  if a == b or b == 0:
    return 1
  else:
    return YH_tri(a-1, b)+YH_tri(a-1, b-1)

Me dirijo a usted, para todo el mundo para recomendar una muy amplia recolección de recursos de aprendizaje pitón, haga clic para entrar , hay un programador senior antes de aprender a compartir experiencias, notas de estudio, hay una posibilidad de experiencia en los negocios, y para todo el mundo para organizar cuidadosamente un cero pitón la base de los datos reales del proyecto, Python diariamente para que en la última tecnología, las perspectivas, los pequeños detalles de aprendizaje tiene que dejar un mensaje
resumen

Lo anterior es una pequeña serie de introducir el uso de bucle mecanismo para mejorar la eficiencia de Python en lugar de funciones recursivas, queremos ayuda,

Publicado 24 artículos originales · ganado elogios 38 · Vistas a 20000 +

Supongo que te gusta

Origin blog.csdn.net/haoxun10/article/details/104761508
Recomendado
Clasificación