Imprimir Fibonacci até um limite n. Os números de Fibonacci satisfazem as condições seguintes: F0 = 0 F1 = 1 Fi = Fi-1 + Fi-2; i maior ou igual 2

Java

17/01/2020

Olá!

Estou com esta atividade, criei o código, mas quando digito 1 imagino que o retorno deveria ser 1. No entanto sempre vem 0. Alguma dica sobre a correção ou melhoria do código?

package tema6_1_3;

import java.util.Scanner;

public class Tema6_1_3a {
public static int calcular(int numero) {
if (numero == 0 || numero == 1)
return numero;
else
return calcular(numero - 1) + calcular(numero - 2);
}

public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
int numero;
System.out.println("Informe o número desejado: ");
numero = entrada.nextInt();
System.out.println("Série de Fibonacci: " + "\n" + "0");
for (int x = 1; x < numero; x++) {
int y = Tema6_1_3a.calcular(x);
System.out.println(y);
entrada.close();
}
}
}
João Medeiros

João Medeiros

Curtidas 0

Melhor post

Sadasd

Sadasd

17/01/2020

Você errou nessa linha aqui:

for (int x = 1; x < numero; x++) {


Pense bem, x = 1, o for executa se x < numero, então se x = numero o for não executa, em outras palavras, se o número for 1 o for não será executado, mas se for 2 ou mais o programa funcionará normalmente, a solução é substuir o x < numero por x <= numero, desse jeito:

for (int x = 1; x <= numero; x++) {
GOSTEI 1

Mais Respostas

João Medeiros

João Medeiros

17/01/2020

Você errou nessa linha aqui:

for (int x = 1; x < numero; x++) {


Pense bem, x = 1, o for executa se x < numero, então se x = numero o for não executa, em outras palavras, se o número for 1 o for não será executado, mas se for 2 ou mais o programa funcionará normalmente, a solução é substuir o x < numero por x <= numero, desse jeito:

for (int x = 1; x <= numero; x++) {


Perfeito, Daniel!
Eu estava tentando achar a solução sempre no if-else da classe "calcular" e não atentei para o for.
Muito obrigado!
GOSTEI 0
POSTAR