끝까지간다
308
2019-05-16 22:11:46
2
496

JAVA 기초 질문해도되나요? 피보나치수열에 대한


일단 코딩부분은

==========================================================

package youtubestudy0516;

public class Fibonacci2 {

public static int fibonacci(int number) {

if(number == 1)

{

return 1;

}

else if(number == 2)

{

return 1;

}

else

{

return fibonacci(number - 1) + fibonacci(number - 2);

}

}

public static void main(String[] args) {


System.out.println("피보나치 수열의 5번째 원소는 " + fibonacci(5) + " 입니다.");

}

}

=============================================================================

여기까지 입니다.
제가 아는 피보나치는
예를 들어 1과 1이 주어지면 2라는 숫자를 만들어내고, 다시 1과 결과값 2를 더해 3을 만들어내고,
2와 다시 결과값 3을 더하여 5를 만들어내는 이런 규칙을 통해 숫자를 더 해 나가는걸로 알고있습니다.
그래서 5번째 피보나치 수열의 원소는 5입니다.
1, 1, 2, 3, 5.....이 순으로....

근데 저 위에 코딩한 부분을 봤을 때,

else
{
 for(int i=2; i < number; i ++ ) 이 부분이 이해가 안되는데.....
피보나치 수열이 1, 1, 2, 3, 5인데....
이것도 배열처럼 i라 가정하고 0, 1, 2, 3, 4 이렇게 똑같이 적용되어 진행되는 건가요?

그래서 number 부분에 5가 들어가면......
i가 0부터 시작해서 4가 되면.....
피보나치 수열에서 1, 1, 2, 3, 5 중에 4번쨰 원소는 5가 되어서 

실행을 하게되면 
피보나치의 5번째 원소는 5 가 되는 것 맞나요?

제가 이렇게 이해하고 알고있는게 맞는지 궁금합니다. 





0
  • 답변 2

  • rezigrene
    1k
    2019-05-16 23:56:21
    else
    {
     for(int i=2; i < number; i ++ ) 

    부분이 어디에...
  • Whislter
    372
    2019-05-17 00:20:26

    똑같이 진행되는건 맞는데 0,1번째 인덱스에 1이라는 값을 넣어둬야해요.

    대충 아래같은 코드일꺼구요.

    var number = 5;
    var fiboArray= new int[number];
    fiboArray[0] = 1;
    fiboArray[1] = 1;
    
    for(int i = 2; i < number; i++) 
     {
     	fiboArray[i] = fiboArray[i - 1] + fiboArray[i - 2];
     }
  • 로그인을 하시면 답변 을 등록할 수 있습니다.