산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> java

자바에서 피보나치 수열 생성하기: for, while, 재귀 예제

자바에서 피보나치 수열이란?

피보나치 수열은 각 숫자가 앞의 두 숫자의 합과 같은 수열입니다. 자바에서는 전통적으로 0과 1로 시작합니다:

0, 1, 1, 2, 3, 5, 8, 13, 21, …

수학적 흥미 외에도 피보나치 수열은 알고리즘 분석에 자주 사용됩니다. 예를 들어 재귀 프로시저의 실행 시간 추정이나 최대공약수 계산 등에 활용됩니다.

for 루프를 사용한 피보나치 수열

// for 루프 사용
public class FibonacciExample {
    public static void main(String[] args) {
        int maxNumber = 10; // 항의 개수
        int previous = 0;
        int current = 1;
        System.out.print("피보나치 수열 " + maxNumber + "개: ");
        for (int i = 1; i <= maxNumber; i++) {
            System.out.print(previous + " ");
            int next = previous + current;
            previous = current;
            current = next;
        }
    }
}

출력:

피보나치 수열 10개: 0 1 1 2 3 5 8 13 21 34

로직:

while 루프를 사용한 피보나치 수열

// while 루프 사용
public class FibonacciWhileExample {
    public static void main(String[] args) {
        int maxNumber = 10;
        int previous = 0;
        int current = 1;
        System.out.print("피보나치 수열 " + maxNumber + "개: ");
        int i = 1;
        while (i <= maxNumber) {
            System.out.print(previous + " ");
            int next = previous + current;
            previous = current;
            current = next;
            i++;
        }
    }
}

출력:

피보나치 수열 10개: 0 1 1 2 3 5 8 13 21 34

사용자 입력 기반 피보나치 수열

import java.util.Scanner;
public class FibonacciUserInput {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("항의 개수를 입력하세요: ");
        int maxNumber = scanner.nextInt();
        int previous = 0;
        int current = 1;
        System.out.print("피보나치 수열 " + maxNumber + "개: ");
        for (int i = 1; i <= maxNumber; i++) {
            System.out.print(previous + " ");
            int next = previous + current;
            previous = current;
            current = next;
        }
        scanner.close();
    }
}

로직: 동일한 반복 로직이지만 항의 개수를 사용자로부터 입력받습니다.

재귀를 사용한 피보나치 수열

// 재귀 구현
public class FibonacciRecursion {
    public static int fibonacci(int n) {
        if (n == 0) return 0;
        if (n == 1 || n == 2) return 1;
        return fibonacci(n - 1) + fibonacci(n - 2);
    }
    public static void main(String[] args) {
        int maxNumber = 10;
        System.out.print("피보나치 수열 " + maxNumber + "개: ");
        for (int i = 0; i < maxNumber; i++) {
            System.out.print(fibonacci(i) + " ");
        }
    }
}

출력:

피보나치 수열 10개: 0 1 1 2 3 5 8 13 21 34

재귀 설명:

  1. 기저 사례: n == 0이면 0 반환; n == 1 || n == 2이면 1 반환
  2. 재귀 사례: fibonacci(n) = fibonacci(n-1) + fibonacci(n-2)
  3. 각 호출이 두 개의 하위 호출로 분기되어 고전적 정의를 반영

재귀는 수학적으로 깔끔하지만 큰 n에 대해 지수 시간이 소요됩니다. 성능이 중요한 코드에서는 메모이제이션이나 반복적 방법을 사용하세요.

java

  1. Java Hello World: 첫 프로그램 작성하기
  2. Java 변수와 리터럴: 종합 가이드
  3. Java 표현식, 문장, 블록 이해하기
  4. Java 클래스와 객체: 실전 가이드
  5. Java 추상 클래스와 메서드 완벽 가이드
  6. Java 중첩/내부 클래스 마스터: 종류, 예제, 모범 사례
  7. Java throw vs throws: 예외 처리 실전 예제로 마스터하기
  8. Java 오토박싱과 언박싱 마스터하기: 실전 예제와 모범 사례
  9. 자바에서 소수 판별하기: 완벽 가이드
  10. 자바에서 암스트롱 수 판별 및 나열하기: for 루프 활용