>Java >Java베이스 >Java 재귀의 간단한 예를 만드는 방법

Java 재귀의 간단한 예를 만드는 방법

coldplay.xixi
coldplay.xixi원래의
2020-10-23 11:39:1612643검색

Java 재귀 생성 방법: 먼저 명확한 재귀 종료 조건을 생성한 다음 판단 조건을 설정합니다. 코드는 [private static int sumNum(int n){if (n == 1){return 1;}return n + 합계번호(n-1)}].

Java 재귀의 간단한 예를 만드는 방법

Java 재귀를 만드는 방법:

프로그램이 자신을 호출하는 프로그래밍 기술을 재귀라고 합니다. 알고리즘으로서의 재귀는 프로그래밍 언어에서 널리 사용됩니다. 프로세스나 함수에는 정의나 설명에서 자신을 직접 또는 간접적으로 호출하는 방법이 있습니다. 일반적으로 크고 복잡한 문제를 원래 문제와 유사한 작은 문제로 변환하여 해결해야 합니다. 소수의 프로그램만 필요합니다. 문제 해결 과정에서 요구되는 여러 번의 반복 계산을 설명하여 프로그램 코드의 양을 크게 줄입니다. 재귀의 힘은 유한한 진술로 객체의 무한한 집합을 정의하는 데 있습니다. 일반적으로 재귀에는 경계 조건, 재귀 앞으로 세그먼트 및 재귀 반환 세그먼트가 필요합니다. 경계 조건이 충족되지 않으면 재귀가 진행되고, 경계 조건이 충족되면 재귀가 반환됩니다.

먼저 가장 간단한 합산 예시를 살펴보겠습니다.​

<span style="font-size:18px;">public static void main(String[] args) {
System.out.println(sumNum(100)); //输出:5050
}
//求1-100的和
private static int sumNum(int n) {
if (n == 1) {
return 1;
}
return n + sumNum(n-1);
}</span>

아래에서는 재귀를 사용하여 피보나치 수열을 구현합니다.

황금분할 수열이라고도 알려진 피보나치 수열은 0, 1, 1, 2, 3, 5, 8, 13, 21,... 수학에서 피보나치 수열로 정의됩니다. F(0)=0, F(1)=1, F(n)=F(n-1)+F(n-2) (n≥2, n∈N* ) 현대 물리학에서는, 준결정 구조, 화학 및 기타 분야에서 피보나치 수열은 직접적으로 적용됩니다.

//用递归求解
public static int fib(int n) {
if (n == 0)
return 0;
if (n == 1 || n == 2)
return 1;
return fib(n - 1) + fib(n - 2);
}
//用循环求解
public static int fib2(int n) {
int a = 0, b = 1, c = 1;
if (n == 0)
return 0;
if (n == 1 || n == 2)
return 1;
for (int i = 0; i < n - 1; i++) {
c = a + b;
a = b;
b = c;
}
return c;
}
//用数组求解
public static int fib3(int n) {
int[] arr = new int[n + 1];
arr[0] = 0;
arr[1] = 1;
for (int i = 2; i <= n; i++) {
arr[i] = arr[i - 1] + arr[i - 2];
}
return arr[n];
}

계승을 계산하는 또 다른 예를 살펴보겠습니다.

팩토리얼(Factorial)은 1808년 크리스티앙 크람프(Christian Kramp, 1760-1826)가 발명한 산술 기호입니다. 수학 용어입니다.

양의 정수의 팩토리얼(영어:factorial)은 해당 숫자보다 작거나 같은 모든 양의 정수의 곱으로, 0의 팩토리얼은 1이 됩니다. 자연수 n의 계승은 n!으로 표시됩니다. 즉, n!=1×2×3×...×n입니다. 계승은 재귀적으로 정의할 수도 있습니다: 0!=1, n!=(n-1)!×n.

//用递归计算阶乘
public static int jc(int n)
{
//结束条件
if ( n == 1)
return 1;
//递归条件
return n * jc(n-1);
}
//用for循环实现阶乘
public static int jc2(int n)
{
int sum = 1;
for (int i = 1; i <= n; i++) {
sum *= i;
}
return sum;
}

재귀 조건:

1. 종료 조건: 재귀 종료라고 하는 명확한 재귀 종료 조건이 있어야 합니다.

2. 재귀적 알고리즘.

재귀의 특징:

1. 단순하고 명확함: 재귀적 알고리즘은 일반적으로 수학의 자연어에 매우 가까운 연산 구조를 볼 수 있게 해줍니다. .

2. 높은 메모리 소비: 재귀 호출 프로세스 중에 시스템은 각 레이어의 반환 지점, 로컬 수량 등을 저장하기 위해 스택을 엽니다. 재귀가 너무 많으면 스택 오버플로 등이 쉽게 발생할 수 있습니다. 따라서 일반적으로 프로그램 설계에 재귀 알고리즘을 사용하는 것은 권장되지 않습니다.

관련 학습 권장사항: java 기본 튜토리얼

위 내용은 Java 재귀의 간단한 예를 만드는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.