import javax.swing.*; public class IterationRecursion { public static void main(String[] args) { /* pide al usuario que introduzca el ángulo en radianes y el número de términos que se utilizarán en el cálculo */ double x,sin_x,cos_x; int n; String xRadians= JOptionPane.showInputDialog("Introduzca x (ángulo en radianes)"); x= Double.parseDouble(xRadians); String nTerms= JOptionPane.showInputDialog("Introduzca n (número de términos para la expansión)"); n= Integer.parseInt(nTerms); cos_x = cos_iter( x , n ) ; // llama al método interactivo del coseno sin_x = sin_rec ( x , n ) ; // llama al método recursivo del seno System.out.println("RESULTADOS" ); // imprime los resultados System.out.println(" sen(" + x + ") = " + sen_x); System.out.println(" cos(" + x + ") = " + cos_x ); System.out.println(" (Utilizando " + n + " términos de expansión)" ); } private static double cos_iter(double angle , int n) { // Método iterativo para calcular el coseno double sum = 0.0 ; for(int i=1 ; i <= n ; i++) { if ((i+1)%2==0) sum += Math.pow(angle,(2.0*i-2.0)) /factorial(2*i-2); else sum -= Math.pow(angle,(2.0*i-2.0)) /factorial(2*i-2); } return sum ; } private static double sin_rec (double angle, int i) { // Método recursivo para calcular el seno if(i==1) return angle; else if ((i+1)%2==0) return Math.pow(angle,2.0*i-1.0)/ factorial(2*i-1)+sin_rec(angle,i-1); else return -Math.pow(angle,2.0*i-1.0)/ factorial(2*i-1)+sin_rec(angle,i-1); } private static int factorial(int n) { // calcula el factorial de n if(n==0) return 1; return ( n * factorial(n-1)); } }