# -*- coding: utf-8 -*- """ Created on Wed Jul 4 14:44:25 2018 @author: Borja Balparda """ ################ # RECURSIVIDAD # ################ # Limpiamos el espacio de trabajo %reset -f # Función que mediante recursividad multiplique todos los # valores de una lista. def mult_list_recur(lista): if len(lista) == 1: print(lista) return lista[0] else: print(lista) return lista[0]*mult_list_recur(lista[1:]) print(mult_list_recur([1,3,5,7,9])) # Función que calcula la serie de Fibonacci # donde Fn = F(n-1)+F(n-2) # F0 = 0 # F1 = 1 # 0,1,1,2,3,5,8,13,21,34,55,89,... def fib_recur(n): if n == 0: return 0 elif n == 1: return 1 else: print(n) return fib_recur(n-1) + fib_recur(n-2) fib_recur(9) # Mismo ejemplo resuelto de manera iterativa def fib_iter(n): a, b = 0, 1 for i in range(n): a, b = b, a + b return a fib_iter(9) """ a = 0 , b = 1 n = 3 n = 1 a = 1, b = 1 + 1 = 2 n = 2 a = 2, b = 1 + 2 = 3 n = 3 a = 3, b = 5 """ # Función que calcule de manera recursiva, los múltiplos de 3 de un número # entero positivo dado, sin utilizar multiplicaciones # Tenemos que definir primero el caso base: # f(0) = 3 # f(1) = f(0) + 3 = 3 + 3 # f(2) = f(1) + f(0) # ... # f(n) = f(n-1)+f(n-2) def mult3(n): if n == 1: return 3 else: print(n) return mult3(n-1) + 3 mult3(10) """ n = 5 -> f(4) + 3 -> f(3) + 3 + 3 -> f(2) + 3 + 3 + 3 -> f(1) + 3 + 3 + 3 + 3 -> 15 """