Algoritmos Fundamentales en Python: Ejemplos Prácticos y Explicaciones
Clasificado en Informática
Escrito el en español con un tamaño de 4,16 KB
Sucesión de Fibonacci
La sucesión de Fibonacci es una secuencia matemática donde cada número es la suma de los dos anteriores, comenzando con 0 y 1. A continuación, se presentan diferentes implementaciones en Python relacionadas con esta sucesión.
Generar los primeros 'n' términos de la sucesión de Fibonacci
Este fragmento de código genera los primeros 'n' términos de la sucesión de Fibonacci:
n=int(input('Dame n:')) print('1') print('1') a=1 b=1 for i in range (n+1): c=a+b print(c) a=b b=c
Determinar si un número pertenece a la sucesión de Fibonacci
El siguiente código determina si un número dado 'n' pertenece a la sucesión de Fibonacci:
n=int(input('Dame un numero:')) a=1 b=1 c=0 while (c<n): c=a+b a=b b=c if (c==n): print(n,'si esta en la sucesión') else: print(n,'no esta en la sucesión')
Implementación recursiva de la sucesión de Fibonacci
Aquí se muestra una función recursiva para calcular el término 'n' de la sucesión de Fibonacci:
def fibonacci(n): if n<=2: return 1 return fibonacci(n-1)+fibonacci(n-2) n=int(input('Dime un numero')) print(fibonacci(n))
Mostrar los términos de Fibonacci menores que 'n'
Este código imprime los términos de la sucesión de Fibonacci que son menores que un número 'n' dado:
n=int(input('Dame n (mayor que 1):')) print('1') print('1') a=1 b=1 for i in range (n+1): c=a+b a=b b=c if c<n: print(c)
Sumatorio de la sucesión de Fibonacci hasta superar un valor 'k'
El siguiente fragmento calcula el sumatorio de la sucesión de Fibonacci hasta que la suma supere un valor 'k' dado. También muestra el último número sumado:
k=int(input('Dame k:')) s=0 a=1 b=1 s=a+b while s<=k: c=a+b s=s+c a=b b=c print('Suma=',s,'Ultimo número=',c)
Factorial
La función factorial calcula el producto de todos los enteros positivos desde 1 hasta 'n'.
def factorial(n): fact=1 if n==0: fact=1 else: for i in range (1,n+1): fact=fact*i return fact n=int(input('Dame el fact.:')) print(factorial(n))
Exponenciación: b^e
A continuación, se presentan dos implementaciones para calcular la exponenciación de un número 'b' elevado a la potencia 'e': una iterativa y otra recursiva.
Implementación iterativa
def expo (b,e): p=1 for i in range (e): p=p*b return p e=int(input('Dime un numero')) b=int(input('Dime un numero')) print(expo(b,e))
Implementación recursiva
def expor(b,e): if e==0: return 1 return b*expor(b,e-1) e=int(input('Dime un numero')) b=int(input('Dime un numero')) print(expor(b,e))
Máximo Común Divisor (MCD) - Algoritmo de Euclides
El algoritmo de Euclides es un método eficiente para calcular el Máximo Común Divisor (MCD) de dos números.
Implementación iterativa
def MCD(a,b): r=a%b while(r!=0): a=b b=r r=a%b return b
Implementación recursiva
def MCDR(a,b): r=a%b if r==0: return b return MCDR(b,r)
Ejemplo de uso:
a=int(input('Dame un numero a: ')) b=int(input('Dame un numero b: ')) if a<b: aux=a a=b b=aux print(MCD(a,b)) print(MCDR(a,b))
Números Palíndromos en Diferentes Bases
El siguiente código determina la menor base en la que un número 'n' es palíndromo (capicúa) en su representación en esa base.
def abase(n,b): if n==0: return 'o' s='' while n>0: r=n%b n=n//b if r<10: s=str(r)+s else: letra=chr(ord('A')+r-10) s=letra+s return s def pali(cad): izq=0 der=len(cad)-1 while(izq<der): if(cad[izq]!=cad[der]): return False izq+=1 der-=1 return True for n in range(1,100): for b in range(2,37+1): cad=abase(n,b) if(pali(cad)): print('n=',n,'b=',b,'->',abase(n,b)) break