재귀
-
방법 A는 방법 B를 호출하므로 이해하기 쉽습니다!
-
재귀는 : 메서드 호출은 A 메서드를 사용합니다!
재귀를 사용하면 간단한 프로그램을 사용하여 복잡한 문제를 해결할 수 있습니다. 일반적으로 크고 복잡한 문제를 해결하기 위해 원래 문제와 유사한 더 작은 문제로 계층별로 변환합니다. 재귀 전략은 문제를 해결하는 데 필요한 여러 반복 계산을 설명하는 데 적은 수의 프로그램 만 필요하므로 문제의 양을 크게 줄입니다. 프로그램 코드 : 재귀의 능력은 제한된 문을 사용하여 무한한 개체 집합을 정의하는 데 있습니다.
재귀 구조는 두 부분으로 구성됩니다.
- 재귀 헤더 :
자체 메서드를 호출하지 않을 때. 머리가 없으면 죽음의 순환에 빠질 것입니다.
- 재귀 본문 : 자체 메서드를 호출해야 할 때.
package com.xin.method;
public class Demo06 {
//2!=2*1
//3!=3*2*1
//5!=%*4*3*2*1 阶乘
public static void main(String[] args) {
System.out.println(f(5));
}
//1!=1
//2 2*f(1)
//3 2*f(2)
public static int f(int n){
if (n==1){
return 1;
}else{
return n*f(n-1); //调用自己
}
}
}
메인 —— → f (5) —— → f (4) —— → f (3) —— → f (2) —— → f (1)
f (1)에서 2로 값 전달 —— → f (2) —— → f (3) —— → f (4) —— → f (5) —— → Main (출력)
재귀 요약
경계 조건 경계
사전 무대
리턴 단계 n * (n-1)
Java는 스택 메커니즘에 속하므로 깊이가 상대적으로 크면 많은 공간과 메모리를 차지하는 데 적합하지 않습니다.
베이스가 상대적으로 작은 상황에 적용 가능
재귀없이 재귀없이 할 수 있습니까?