2016-11-20 17 views
0

나는 자바에서 절대적으로 초보자이며 fibonacci 시퀀스에 관한 acm.libary를 사용하여 코드를 작성하려고합니다.Fibonnaci 시퀀스

결과는 매우 좋지만 순서의 마지막 번호 만 인쇄하고 싶습니다. 나는 어떻게 해야할지 모르겠다. 사용자 유형 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 : 단순히 fibonacci 숫자의 정의를 사용하여 구현되지는 않지만 잘못된 숫자를 계산하지는 않습니다. 구현이 잘못되면 하나 이상의 잘못된 번호가 있어야합니다. 어느 것? – 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가 없어도 잘 작동합니다. –