Java 사용 귀속 해결 알고리즘 문제의 실례 설명
프로그램 호출 자체의 프로그래밍 기교를 귀속 (recursion) 이라고 부른다.귀속은 하나의 알고리즘으로 프로그램 설계 언어에서 광범위하게 응용된다.하나의 과정이나 함수는 그 정의나 설명에서 직접적이거나 간접적으로 자신을 호출하는 방법이 있다. 이것은 통상적으로 하나의 대형 복잡한 문제를 원문제와 비슷한 규모가 비교적 작은 문제로 층층이 바꾸어 해답을 구한다. 귀속 전략은 소량의 프로그램만 있으면 해답 과정에 필요한 여러 차례의 중복 계산을 묘사할 수 있고 프로그램의 코드량을 크게 줄일 수 있다.귀속의 능력은 유한한 문장으로 대상의 무한 집합을 정의하는 데 있다.
귀속의 세 가지 조건:
1. 경계 조건
2. 전진 단계로 귀속
3. 반복 반환 세그먼트
경계 조건이 충족되지 않을 때 차례로 전진한다.경계 조건이 충족되면 귀환한다.
다음은 두 가지 예제 프로그램을 통해 설명합니다.
1. 자바 코드를 사용하여 5의 계승을 구한다.(5의 곱하기 = 5*4*3*2*1)
package org.wxp.recursion;
/**
* 5 (result = 5*4*3*2*1)
* @author Champion.Wong
*/
public class Test01 {
public static void main(String[] args) {
System.out.println(f(5));
}
public static int f(int n) {
if (1 == n)
return 1;
else
return n*(n-1);
}
}
이 문제는 다음과 같은 세 가지 기준으로 분류됩니다.(1) 경계 조건: 계승, 마지막 수, 즉 1까지 곱하면 1을 되돌려주고 프로그램이 끝까지 실행한다.
(2) 귀속 전진 단계: 현재의 매개 변수가 1과 같지 않을 때 자신을 계속 호출한다.
(3) 귀환 세그먼트: 최대 수부터 곱하기, 현재 매개 변수가 5이면 5*4, 즉 5*(5-1), 즉 n*(n-1)
2. Java 코드를 사용하여 수열을 구합니다: 1, 2, 3, 5, 8...40위
package org.wxp.recursion;
/**
* :1,1,2,3,5,8...... 40
*/
public class Test_02_Fibonacci {
public static void main(String[] args) {
System.out.println(f(6));
}
public static int f(int n ) {
if (1== n || 2 == n)
return 1;
else
return f(n-1) + f(n-2);
}
}
3. 문제 설명: Fibonacci 수열의 10번째 위치의 값을 구해볼까요?(피보나치 수열(Fibonacci Sequence), 황금분할수열이라고도 하는데 이런 수열을 가리킨다. 1, 2, 3, 5, 8, 13, 21...... 수학적으로 피보나치 수열은 다음과 같이 귀속되는 방법으로 정의된다. F0=0, F1=1, Fn=F(n-1)+F(n>=2, n∈N*)프로그램 목록:
/**
*<p>Title:Java </p>
*<p>Description: Fibonacci 5 </p>
*<p>Filename:Fibonacci.java</p>
*/
public class Fibonacci
{
/**
* : Fibonacci
* :int n
* :int
*/
public static int fun(int n)
{
if(1==n || 2==n)
{
return 1;
}
else
{
return (fun(n-1) + fun(n-2));
}
}
/**
* :
* :String[] args
* :void
*/
public static void main(String[] args)
{
System.out.println(fun(10));
}
}
실행 결과는 다음과 같습니다.55
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.