ayuda con long.

Iniciado por EdgarKrieger, 7 Marzo 2016, 19:49 PM

0 Miembros y 1 Visitante están viendo este tema.

EdgarKrieger

Buenas, la duda que tengo ahora es que, estoy haciendo un programa en java sobre funciones recursivas, muy parecido a la serie de fibonacci, pero al imprimir le 61 me sale el número requerido pero al meter el 62 me sale el numero limite del long, mi código es este:

Código (java) [Seleccionar]
package recurso;
import java.util.Scanner;
public class Recurso {
    static long recurso(long n){
       long A=0;
       if(n==0 || n ==1)
           return n;
       else
           A = (long)(recurso(n-1)+ Math.pow(2,n));
       return A;
    }
    public static void main(String[] args) {
        Scanner ent = new Scanner(System.in);
        System.out.print("Numero: ");
        long n = ent.nextLong();
        System.out.println("Respuesta: "+recurso(n));
    }
}


y el resultado de 61 es:

Código (java) [Seleccionar]
run:
Numero: 61
Respuesta: 4611686018427387904
BUILD SUCCESSFUL (total time: 2 seconds)


y el resultado de 62 es:

Código (java) [Seleccionar]
Numero: 62
Respuesta: 9223372036854775807
BUILD SUCCESSFUL (total time: 0 seconds)


y por añadir el 63 es:

Código (java) [Seleccionar]
run:
Numero: 63
Respuesta: 9223372036854775807
BUILD SUCCESSFUL (total time: 2 seconds)


ese es mi problema, no se que hacer para que imprima mas números mucho mas grandes, ayuda por favor.
"Las matemáticas son el lenguaje, el idioma que utilizo Dios para escribir el mundo"
Galileo Galilei

engel lex

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

EdgarKrieger

Muchas gracias por la ayuda  ;D ;D, trate de hacerlo con Biginteger pero no me salio me marcaba error y creo que es porque no utilice bien las funciones, tratare de hacerlo ahora en C++ a ver si me sale.
"Las matemáticas son el lenguaje, el idioma que utilizo Dios para escribir el mundo"
Galileo Galilei

engel lex

en c++ no es mucho más simple, aquí un post que hice sobre esto

Calculo de pi en alta precisión (aporte)

allí esta el código con el que calculé pi  10milones de decimales y el link al post de como configurar GMP
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.