2014-02-21 4 views
-1

Создал программу, которая вводит число и предоставляет ее эквивалентное число фибоначчи в качестве выхода. Но с моим кодом что-то не так: cFibonacci java program

import java.util.Scanner; 
public class Fibonacci { 
    public static void main(String[] args) { 
     Scanner in = new Scanner (System.in); 
     int prev, next, num, sum = 0, n; 
     prev=next=1; 

     System.out.print("Input number: "); 
     num = in.nextInt(); 

     if ((num == 1) || (num ==2)) 
      System.out.println(prev); 

     else { 
      for(n=1; n<=prev; n++) { 
       sum = prev + next; 
       prev = next; 
       next = sum; 
      } 

      System.out.println(sum); 
     } 

    } 
} 

Что-то не так я просто не вижу. Помогите? : c

+5

«Неправильно» не понятно, пожалуйста, объясните, что случилось –

+1

Что вы подразумеваете под термином «его эквивалентное число фибоначчи»? –

+0

нет петли –

ответ

1

ИЗМЕНИТЬ СВОЮ цикл для этого:

for(n=2; n<num; n++) 

Это будет решить вашу проблему.

Пояснение: Поскольку вы уже определили, что 1 или 2 предоставят вам 1, запустите цикл @ 2. Прокрутите до тех пор, пока n не станет больше, чем введенный номер. Это решит проблему, с которой вы столкнулись.

+0

да, у меня есть. Я только поднялся до 10 мест. Или я не понимаю, что проблема опубликована? Я понял проблему: 1 - 1, 2 - 1, 3 - 2, 4 - 3, 5 - 8, 7 - 13, и т.д. ... – Opzoleet

+0

Спасибо! :) Это сработало Кстати, 5 это 5. Not 8 :) –

+0

Не проблема, иногда немного отходите от проблемы и вытащите ее, чтобы посмотреть, как она должна выглядеть. Редактировать: Да, sry, не означало 5 is 8 ... type (5 is 5) – Opzoleet

0

Если вы хотите получить число фибоников, которое пользователь вводил, вам необходимо выполнить итерацию в цикле for.

for(n=1; n<=num; n++) { 
        sum = prev + next; 
        prev = next; 
        next = sum; 
        System.out.println(sum); 
       } 

Также необходимо напечатать номер, который необходимо положить в петлю.

+3

Вместо того, чтобы делать домашнее задание для людей, почему бы не объяснить процесс работы с проблемой и отладкой кода? –

+0

kk sir @ KevinWorkman.It будет лучше, если вы подождете какое-то время, прежде чем downvote ответ – Kick

2

Вы останавливаете цикл, когда n достигает prev, так что вы не получаете правильный номер. Прекратите, когда вы прошли num вместо:

for(n = 1; n <= num; n++) { 

Пример запуска:

Input number: 6 
21