Las personas que tienen experiencia en programación deben estar familiarizadas con las funciones recursivas. A menudo usamos la recursividad para resolver una serie de problemas complejos. Los algoritmos recursivos son muy efectivos para la mayoría de los problemas y también pueden optimizar nuestro código. cuando se usa recursividad:
1) La recursividad consiste en llamar a la función misma dentro de la función misma.
2) La eficiencia de la recursividad es relativamente baja y no se recomienda utilizarla si hay un límite de tiempo.
3) Es necesario que haya una condición final clara en el proceso recursivo, es decir, la salida recursiva.
Expliquemos las funciones recursivas en detalle a continuación.
Primero veamos el uso simple de la recursividad a través de un ejemplo:
m=int(input('Ingrese un número:'))deftest(x):x+=2ifx<100:test(x)else:print('La última x es:',x)test(m)
La salida es:
Introduce un número: 20 y la última x es: 100
Analicemos este ejemplo. Primero, en la primera línea de código, ingresamos un número entero. En la última línea, m se pasa como parámetro real al método test(). En el método test(), x será agregado. 2 primero, y luego Un juicio, si el valor de x es menor que 100, luego llame a esta función nuevamente Al llamar, el valor actual de x se usa como parámetro real para participar en la llamada. La recursión finaliza cuando x>. =100 está satisfecho.
Mire el diagrama a continuación:
Es decir, si no se cumplen las condiciones, regresa a la capa más externa y llama a esta función.
Cuando se habla de problemas clásicos en algoritmos recursivos, la secuencia de Fibonacci y la Torre de Hanoi son siempre inseparables. Aquí explicaremos cómo utilizar la recursividad para resolver la secuencia de Fibonacci.
En primer lugar, necesitamos saber que la fórmula recursiva de la secuencia de Fibonacci es F(n)=F(n-1)+F(n-2), F(1) y F(2) son 1. puedo usar recursividad Para encontrar el valor de un elemento en la secuencia de Fibonacci.
Hay muchas formas que podemos utilizar para resolver problemas de secuencias de Fibonacci.
Primero utilizamos el método recursivo comúnmente utilizado para resolver este problema:
N=int(input(ingrese el número de elementos que se obtendrán:))deffibonacci(n):ifn<=2:#Si es menor o igual a 2, establezca n en 1 return1else:returnfibonacci(n-1) +fibonacci(n-2)print ('El valor correspondiente es',fibonacci(n))
La salida es:
Ingresa el número de artículos que deseas obtener: 4 corresponde a 3
Para este método de llamada recursiva, cuando ingresamos el valor 4, las siguientes operaciones se realizarán de forma recursiva:
fibonacci(3)+fibonacci(2)=fibonacci(2)+fibonacci(1)+fibonacci(2)
Entonces podemos ver que el valor del cuarto término es 1+1+1=3.
De hecho, este método de resolución es una pérdida de tiempo porque se requieren demasiadas iteraciones. También podemos usar espacio en lugar de tiempo para resolver este problema.
El código es el siguiente:
n=int(input(ingrese el número de términos a obtener:))fibonacci=[1,1]foriinrange(2,n):fibonacci.append(fibonacci[i-1]+fibonacci[i-2])print ('El valor correspondiente es',fibonacci[n-1])
La salida es:
Ingresa el número de artículos que deseas obtener: 4 corresponde a 3
De esta manera, primero especificamos los valores de los dos primeros elementos de la lista, y luego, para el número n de elementos que queremos resolver, completamos directamente la lista de números de Fibonacci hasta el elemento que necesitamos mediante la fórmula, y finalmente según el índice El valor encuentra directamente el resultado de salida correspondiente.
Eso es todo para la función recursiva. Como se mencionó anteriormente, debemos prestar especial atención a la salida recursiva y los límites de tiempo. La salida es la clave para el final de la recursividad. En muchos casos, nuestro uso de métodos recursivos hará que el programa. exceda el tiempo especificado, en este momento necesitamos cambiar nuestra forma de pensar para resolver el problema. El segundo método mencionado anteriormente puede ayudar a todos a resolver el problema.