Java의 피보나치 수열: Java에서 피보나치를 작성하고 표시하는 방법

게시 됨: 2020-07-29

피보나치 수열의 이름은 이탈리아 수학자 레오나르도 피보나치에서 따왔습니다. 그는 1202년에 자신의 저서 Liber Abaci로 이 시리즈를 서유럽에 소개했습니다. 인도 수학계는 Pingala의 연구에서 입증된 것처럼 BCE 200년에 피보나치의 마법의 길을 보았습니다. 이러한 숫자 표현은 코딩 및 컴퓨팅 영역에서도 특별한 위치를 차지합니다. 이 설명을 마치면 Java로 피보나치 수열을 작성하는 방법을 배웠을 것입니다.

정수 시퀀스는 0과 1로 시작하고 그 뒤의 각 숫자는 앞에 오는 두 숫자의 합입니다(예: 0, 1, 1, 2, 3, 5 등). JavaScript에서 이를 생성하는 두 가지 주요 방법이 있습니다. 즉 (i) 반복을 사용하는 것, 즉 재귀를 사용하지 않고 (ii) 재귀를 사용하는 것입니다. 반복적 접근 방식은 작업을 완료하는 데 선형 시간이 걸리지만 재귀 기술을 사용하면 기하급수적으로 솔루션을 얻을 수 있습니다. 이제 이러한 방법의 세부 사항을 하나씩 살펴 보겠습니다.

읽기: Python과 Javascript 비교: 어느 것을 선호해야 합니까?

목차

자바로 피보나치 수열 작성하기

방법 1: 재귀 없이

  • For 루프

이 경우 Java 프로그램이 피보나치 수열의 처음 n개 숫자를 생성하기를 원합니다. 다음은 'for' 루프 반복이 작동하는 방식에 대한 자세한 내용입니다.

먼저 시리즈의 처음 두 숫자를 초기화합니다. 그런 다음 For 루프는 두 개의 직전 선행자를 더하고 값을 인쇄합니다. 이 프로세스는 처음 n개의 숫자가 표시될 때까지 계속됩니다. 프로그램은 반복을 시작하기 전에 이미 0과 1을 공개했으므로 For 루프 조건은 n-2로 지정됩니다.

  • 루프 동안

For Loop 메서드와 유사한 논리를 따르지만 프로그래머가 응용 프로그램에 더 주의해야 합니다. 'while' 루프의 제어 흐름 문은 부울 조건에서 코드를 반복적으로 실행합니다. 조건이 충족되거나 참인 경우에만 루프 본문이 실행됩니다. 또한 업데이트 표현식은 루프 변수를 증가시킵니다. 반대로 조건이 false로 평가되면 while 루프를 종료합니다.

읽기: Java 아키텍처 및 구성 요소 설명

While 루프를 더 잘 이해하기 위해 아래에 제공된 Java 코드를 관찰해 보겠습니다.

방법 2: 재귀 사용

재귀를 사용하여 Java에서 피보나치 수열을 작성할 때 함수는 직접 또는 간접적으로 자신을 호출합니다. 자바스크립트의 기본적인 프로그래밍 기법이며 이 함수를 재귀 함수(recursive function)라고 합니다.

재귀 알고리즘을 사용하면 복잡한 문제를 쉽게 해결할 수 있습니다. 재귀를 사용하여 피보나치 수열의 처음 'n'개 숫자를 인쇄한다고 가정합니다. 필요한 시리즈를 생성하려면 재귀적 Java 프로그램이 필요합니다. 다음은 그러한 구현에 대한 단계별 설명입니다.

  • 사용자는 입력을 줄 것입니다
  • For 루프는 각 반복이 n 위치에서 피보나치 수를 반환하는 함수를 호출할 때까지 루프에 적용됩니다. 그것을 피보나치수(int n)라고 합시다.
  • 그런 다음 함수는 재귀적으로 자신을 호출하고 이전 두 개의 피보나치 수를 더합니다.

피보나치 수열의 예

피보나치 수열의 실제 사례에는 꽃의 꽃잎, 솔방울, 나무 가지, 껍질의 나선 등 자연의 다른 많은 표현이 포함됩니다. 이 수학적 순서의 황금비 규칙은 우리의 DNA 분자와 은하의 나선과 같은 우주의 가장 기본적인 특성에 내재되어 있습니다.

위에서 설명한 반복 및 재귀 방법은 피보나치 수열의 반복 관계를 구현한 것입니다. F(n) = F(n-1) + F(n-2)로 지정됩니다. 이 관계식에 시드 값을 입력하면 F(0) = 0 및 F(1) = 1이 됩니다. 주어진 숫자 n에 대해 피보나치 수열에서 n번째 숫자를 찾는 방법은 무엇입니까? 입력이 다른 이 시나리오를 고려해 보겠습니다.

  • 입력 n=2의 경우 출력은 1이 됩니다.
  • 입력 n=9의 경우 결과는 34가 됩니다.

이러한 기본 사항을 기반으로 F(n)을 반환하는 함수를 작성할 수 있습니다. 함수는 다음과 같이 주어질 수 있습니다: int fib(int n). fib() 함수는 n = 0일 때 0을 반환합니다. 마찬가지로 n = 1이면 fib()는 1을 반환해야 합니다. 그리고 출력은 n > 1일 때 F(n-1) + F(n-2)여야 합니다.

fib() 함수에 대한 테스트 케이스

짧은 시퀀스의 경우, 즉. [0, 1, 1, 2, 3, 5, 8,…,55] 및 fib(5), 결과는 5가 됩니다. 따라서 피보나치 수열 배열에서 인덱스 5를 가진 요소를 반환하는 것을 목표로 합니다. . 반복적 방법을 사용하여 이것이 어떻게 전개되는지 봅시다.

  • 함수 fib(n){

let 배열 = [0,1];

for (j = 2; j < n + 1; j ++) {

array.push(배열[j-2] + 배열[j-1])

}

반환 배열[n]

}

위의 코드 스니펫에서 빈 배열을 생성하는 대신 배열 변수를 [0,1]에 할당했음을 알 수 있습니다. 루프는 j = 2에서 반복을 시작하고 배열의 길이가 n + 1이 될 때까지 숫자를 계속 추가합니다. 이러한 방식으로 n 인덱스의 숫자를 반환합니다. 따라서 출력은 fib(4)의 경우 3, fib(5)의 경우 5 등입니다.

인터뷰에서 재귀를 사용하여 동일한 문제를 해결하라는 요청을 받으면 다음 기본 사례를 사용할 수 있습니다.

  • 함수 fib(n){

만약 (n > 2){

n을 반환

}

fib(n-1) + fib(n-2) 반환

}

인수 5를 사용하여 fib()를 호출한다고 가정합니다. 여기에서 fib 함수는 기본 케이스(n 값이 2보다 작음)에 도달할 때까지 트리의 더 많은 분기를 계속 생성한 다음 반환을 합산하기 시작합니다. 각 지점의 가치. 재귀 호출은 5와 같은 정수가 인쇄될 때만 중지됩니다.

자바에서 피보나치 수열의 장점

  • 간단한 Javascript 프로그램으로 피보나치 수열을 실행하여 특정 숫자 또는 용어까지 수열을 쉽게 표시할 수 있습니다.
  • 재귀는 Java로 간결하고 표현력 있는 코드를 제공합니다.
  • 반복 알고리즘은 코드를 견고하게 유지하면서 경계가 있는 프로덕션 환경에서 탁월한 솔루션을 제공합니다. 대조적으로, 재귀 알고리즘은 때때로 스택 오버플로 오류로 이어집니다.
  • 피보나치 검색은 정렬된 배열에서 작동하며 주로 액세스 속도가 이전에 액세스한 위치에 따라 달라질 때 이진 검색보다 더 잘 수행됩니다.
  • 피보나치 시리즈에 정통하여 학생들은 다양한 프론트엔드 및 백엔드 기능을 요구하는 현대적인 응용 프로그램에서 작업하면서 논리를 개발할 수 있습니다.

확인: Java 프로젝트 아이디어

합산

이 기사에서는 Java로 피보나치 수열을 구현하고 다양한 방법 뒤에 있는 논리를 이해하는 데 도움을 주려고 했습니다. 재귀를 사용하거나 재귀 없이(for 루프 및 while 루프) 피보나치 수를 나타낼 수 있습니다. 그 후, 우리는 두 가지 방법의 핵심 개념을 새로 고치고 장점에 대해서도 논의했습니다.

이 모든 정보를 통해 알고리즘에 대한 지식을 새로고침하고 더 나은 코드를 작성할 수 있습니다. 배열, 이진 트리, 연결 목록 등과 같은 데이터 구조도 잘 이해하고 있다면 가장 좋을 것입니다. 위의 기사를 수정의 시작점으로 사용하고 프로그래밍 기술을 구축하십시오!

Java, 전체 스택 소프트웨어 개발에 대해 자세히 알아보려면 작업 전문가를 위해 설계되었으며 500시간 이상의 엄격한 교육, 9개 이상의 프로젝트를 제공하는 upGrad & IIIT-B의 전체 스택 소프트웨어 개발 PG 디플로마를 확인하십시오. , 과제, IIIT-B 동문 상태, 실질적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.

당신의 꿈의 직업에 착륙

전체 스택 개발에서 업그레이드 및 IIIT-방갈로르의 PG 디플로마
지금 신청