Test Foro de elhacker.net SMF 2.1

Programación => Programación General => 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 (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.
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