Algorithm/풀었던문제

알고리즘 기초 - 2 (파보나치 수열 출력)

dlgkstjq12 2019. 12. 3. 14:26




파보나치 수열은 뒤에 있던 수가 앞의 수가 되고, 앞의 수와 뒤의 수를 더한 값이 뒤의 수가 된다.


첫번째항  = 1


두번째항  = 1


세번째항 = 첫번째항(1) + 두번째항(1) = 2


네번째항 = 두번째항(1) + 세번째항(2) = 3


.......


ex) 1 1 2 3 5 8 13 .....




Main.java


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package Problem2;
 
 
import java.util.Scanner;
 
public class Main {
    
    public static void main(String[] args) {
        
    
        //파보나치 수열 : 앞에 두수의 합이 세번째 항의 숫자가 된다.
        
        //0과 1로 주로 시작하며, 뒤에 있던 수가 앞의 수가 되고, 앞의 수와 뒤의 수를 더한 값이 뒤의 수가 된다.
        
        
          Scanner scan = new Scanner(System.in);
          
          int a = 1, b = 1, temp;
          
          int i;
          
          System.out.println("몇번째 항까지 출력할까요??"); i = scan.nextInt();
          
          for(; i>=1; i--) {
          
          System.out.print(a+" ");
          
          temp = a+b; a = b; b = temp;
          
          }
          
          System.out.println();
          
          System.out.println();
          
          
          
          System.out.println("배열을 사용하는 방법");
        
        
        //2번째 방법 (배열을 사용하는 방법)
          
        //3번째 항부터 공식 (arr[j] = arr[j-1] + arr[j-2];) 이 적용되기 때문에
          
        //1항과 2항에는 값을 1로 초기화 해주어야 한다.
 
        int []arr = new int[100];
        
        arr[1= 1;
        
        arr[2= 1;
        
        
        for (int j = 3; j < 10; j++) {
            
            arr[j] = arr[j-1+ arr[j-2];
            
            
        }
        
        for (int j = 1; j < 10; j++) {
            
            
            System.out.print(arr[j]+" ");
            
            
        }
        
    }
 
}
 
cs




출력 결과




출처

https://www.youtube.com/watch?v=WpzjpKt0lbc&list=PLVoihNyHW4xkm_KJ8_N8X7F6EQP4uSRyR&index=3


https://enter.tistory.com/88