2016-11-20 3 views
0

Я абсолютный новичок в java, и я хочу написать код с acm.libary, который посвящен последовательности фибоначчи.Fibonnaci Sequence

Результат очень приятный для меня, но я хочу только напечатать последний номер последовательности. Я не знаю, как это сделать. Если пользователь вводит n = 5, результат должен быть равен 8. Если пользователь вводит n = 8, результат должен быть равен 21. В моей программе это последнее число, но программа также печатает все предыдущие номера.

Я надеюсь, что вы можете понять меня: D

Спасибо заранее!

int a = 1; 
int b = 0; 

public void run() { 
    int n = readInt ("n: "); 
    for(int i = 1; i <= n; i++) { 
     println (fibonacci (n)); 
    } 
} 

private int fibonacci(int n) { 
    int c = (a) + (b); 
    a = b; 
    b = c; 
    return c; 
} 
+1

Возможно, что помогает: http://introcs.cs.princeton.edu/java/23recursion/Fibonacci.java.html – Philipp

+1

Ваша реализация 'fibonacci' неправильно. – Maroun

+0

@Maroun: Он не реализован просто с использованием определения числа фибоначчи, но я не вижу, что он вычисляет неправильные числа. Если реализация неверна, должно быть хотя бы одно неправильное число. Который из? – mm759

ответ

0

Вы можете заменить тело цикла этим:

if (i == n) { 
    println (fibonacci (n)); 
} else { 
    fibonacci (n); 
} 
+0

Большое вам спасибо! Это сработало. –

1

Попробуйте этот код.

import java.util.Scanner; 
public class Test { 
    int a = 1; 
    int b = 0; 

    public int run() { 
     @SuppressWarnings("resource") 
     Scanner s = new Scanner(System.in); 
     int n = s.nextInt(); 
     int value =0; 
     for(int i = 1; i <= n; i++) { 
      value = fibonacci (n); 
     } 
     return value; 
    } 

    private int fibonacci(int n) { 
     int c = (a) + (b); 
     a = b; 
     b = c; 
     return c; 
    } 

    public static void main (String arg[]) 
    { 
     Test t = new Test(); 
     System.out.println(t.run()); 
    } 
} 
+0

Отлично! Благодаря! Это работает отлично, без acm.libary. –