Foro de elhacker.net

Programación => Java => Mensaje iniciado por: EdgarKrieger en 7 Marzo 2016, 19:49 pm



Título: ayuda con long.
Publicado por: EdgarKrieger en 7 Marzo 2016, 19:49 pm
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
  1. package recurso;
  2. import java.util.Scanner;
  3. public class Recurso {
  4.    static long recurso(long n){
  5.       long A=0;
  6.       if(n==0 || n ==1)
  7.           return n;
  8.       else
  9.           A = (long)(recurso(n-1)+ Math.pow(2,n));
  10.       return A;
  11.    }
  12.    public static void main(String[] args) {
  13.        Scanner ent = new Scanner(System.in);
  14.        System.out.print("Numero: ");
  15.        long n = ent.nextLong();
  16.        System.out.println("Respuesta: "+recurso(n));
  17.    }
  18. }

y el resultado de 61 es:

Código
  1. run:
  2. Numero: 61
  3. Respuesta: 4611686018427387904
  4. BUILD SUCCESSFUL (total time: 2 seconds)

y el resultado de 62 es:

Código
  1. Numero: 62
  2. Respuesta: 9223372036854775807
  3. BUILD SUCCESSFUL (total time: 0 seconds)

y por añadir el 63 es:

Código
  1. run:
  2. Numero: 63
  3. Respuesta: 9223372036854775807
  4. BUILD SUCCESSFUL (total time: 2 seconds)
  5.  

ese es mi problema, no se que hacer para que imprima mas números mucho mas grandes, ayuda por favor.


Título: Re: ayuda con long.
Publicado por: engel lex en 7 Marzo 2016, 19:54 pm
te sirve esto? lo que buscas se llama "matemática de precisión arbitraria"

http://www.iteramos.com/pregunta/23688/cruz-de-la-mejor-biblioteca-de-matematicas-de-precision-arbitraria-portable-plataforma (http://www.iteramos.com/pregunta/23688/cruz-de-la-mejor-biblioteca-de-matematicas-de-precision-arbitraria-portable-plataforma)


Título: Re: ayuda con long.
Publicado por: EdgarKrieger en 8 Marzo 2016, 16:08 pm
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.


Título: Re: ayuda con long.
Publicado por: engel lex en 8 Marzo 2016, 16:20 pm
en c++ no es mucho más simple, aquí un post que hice sobre esto

Calculo de pi en alta precisión (aporte) (https://foro.elhacker.net/buscador-t412338.0.html)

allí esta el código con el que calculé pi  10milones de decimales y el link al post de como configurar GMP