como podria imprimir los 1000 primeros numeros de fibonacci en netbean

J

como podria hacer esto?
solo halle la manera de imprimir hasta el 1000, pero yo necesito que me imprima los primeros 1000 numeros
Donde podria colocar un contador?

public static void main(String[] args) {

                   int f1=1, f2=1;
    System.out.println(f1);
    while(f2<=1000)
    {
        System.out.println(f2);
        f2+=f1;
        f1=f2-f1;
PiPePiTo

Quita el i=num2 y te hará las 1000 iteraciones

Ahora mismo estás cambiando el valor del iterador por el resultado de la suma del Fibonacci, pero tu quieres los 1000 primeros de la secuencia, cuando llega alguno cercano al 1000 en num2 y lo cargas en i te estás jodiendo el contador, porque no se incrementa en 1, sino que le pones el resultado de tu suma anterior.

Has editado el codigo! Ahora mi respuesta no vale!

Ponte un contador a 0, incrementalo dentro del while y deja tu condición actual pero con el contador nuevo

1 respuesta
J

acabo de editarlo... podes revisarlo y ayudarme que esta mas sencillo ahi.

1 respuesta
J

#2 como le pongo el contador dentro del while, esa parte no entiendo...de que forma lo hago.

PiPePiTo

#3 tu anterior codigo estaba bien salvo por lo que te he puesto, lee mi ultimo párrafo ahora para el del while, el contador fuera y dentro del bucle lo incrementas en uno.

Int contador = 0
While(contador<1000){
//Aqui haces tu magia
Contador++; (o contador= contador+1 o como prefieras sumarle 1 a la variable)
}

1 respuesta
J

#5 no me sirve, hice de esta manera.
int f1=1, f2=1;
int cont=0;


    System.out.println(f1);
    while(cont<=1000)
        cont++;
    {
        
   
        System.out.println(f2);
        f2+=f1;
        f1=f2-f1;
1 respuesta
B

Cada que alguien hace algo como "cont++" muere un gatito...

iSecOne

Solo necesitas un bucle y un par de variables auxiliares

PiPePiTo

#6 el cont++ metelo dentro de los corchetes, se tiene que ejecutar DENTRO del bucle

B

Espero que estés poniendo la llave de cierre que no estas poniendo aquí además de lo ya comentado por PIPePITo.

Por mi parte comentar:

  1. Evita la asignación mental: Llama a las variables de una forma clara.
  2. Ya te lo han comentado pero veo que no lo has puesto en la respuesta.. si empiezas desde 0 y vas hasta <= 1000 harás 1001 iteraciones.
  3. "cont++" lo que hace es devolver lo que vale "cont" y despues sumarle +1 ... estas demandando un valor que no estas usando = utilizando recursos que no necesitas. Lo suyo es usar "++cont" esto sumara +1 a cont pero sin darnos el valor de "cont" antes de la operación... Aunque este último punto dependerá del compilador/interprete que uses... lo modernos suelen optimizar el "cont++" en los bucles y generan el mismo código que usando "++cont".

** Entiendo que es un código pequeño y que estas empezando... ¿que mejor momento para ir adquiriendo buenos hábitos? Dale duro! Suerte!

1 1 respuesta
PiPePiTo

#10 gracias por lo del ++ nunca me acuerdo dónde era mejor ponerlo (tampoco le he dado vueltas), no me gusta demasiado incrementar variables así dentro de un while :S

1
B

.

B

Para empezar necesitarías BigIntegers. Los números de fibonacci crecen muy rápido, y dejan de caber en un int o incluso en un long muy rápido.

	public static void main (String[] args) throws java.lang.Exception {
		BigInteger f0 = new BigInteger("0");
		BigInteger f1 = new BigInteger("1");
		for(int i = 0; i < 1000; i++) {
			f1 = f1.add(f0);
			f0 = f1.add(f0.negate());
			System.out.println(f0);
		}
	}

Usuarios habituales