package com.trifulcas.saludo; public class Recursividad { public static void main(String[] args) { System.out.println(factorial(5)); System.out.println(fibonacci(5)); System.out.println(fibonacci(8)); } // Una función recursiva es una función que se llama a sí misma // Factorial: multiplicación desde el 1 hasta el número // Factorial: N! -> N*(N-1)! 1!->1 // factorial(5)-->5*factorial(4) // factorial(4)-->4*factorial(3) // factorial(3)-->3*factorial(2) // factorial(2)-->2*factorial(1) // factorial(1)-->1 public static int factorial(int num) { if (num <= 1) { return 1; } else { return num * factorial(num - 1); } } /* * Las reglas para definir una función recursiva son dos * a) Tener un caso base, es decir habrá un momento en el que la función * devuelve un valor fijo. * b) Descomponer el problema en la misma función pero de valores más pequeños */ /* * Sucesión de fibonacci. Empezamos con 1,1 y cada número es la suma de los dos anteriores * 1,1,2,3,5,8,13,21,34,.... * Obtener el elemento N de la sucesión de fibonacci * Si N es 1 o 2 --> 1 * El elemento N es igual a suma de fib(N-1) + fib(N-2) */ public static int fibonacci(int posicion) { if(posicion<=2) { return 1; } else { return fibonacci(posicion-1)+fibonacci(posicion-2); } } }