재귀 101
오늘은 몇 가지 재귀 문제와 상속받은 개념을 단순화하겠습니다.
What is Recursion?
when to use Recursion?
Recursion problems and key takeaways
지정된 조건이 충족될 때까지 함수가 자신을 호출할 때.
void foo(int i){
print(1);
foo();
}
main(){
foo(i);
}
위의 함수는 계속 자신을 호출하고 멈추지 않고 1을 인쇄하는 무한 재귀입니다. 이것은 스택 오버플로로 이어져 모든 메모리 공간까지 스택을 채웁니다.
이를 방지하려면 기본 조건을 작성해야 합니다.
cnt=0
foo(){
if(cnt==4)
return;
print(cnt)
cnt++
f()
}
main(){
f();
}
섹션 1: 쉬운 문제:
문제 1: Java에서 재귀를 사용하여 이름을 N번 인쇄
public class Main
{
static void printName(int n){
while(n<1) {
return;
}
n--;
System.out.println("swapnil");
printName(n);
}
public static void main(String[] args) {
java.util.Scanner sc= new java.util.Scanner(System.in);
int n= sc.nextInt();
int i=1;
printName(n);
}
}
문제 2: N에서 1로 선형으로 인쇄합니다.
리버스 패션
public class Main
{
static void printNum(int i,int n){
if(i<1){
return;
}
else{
System.out.println(i);
printNum(i-1,n);
}
}
public static void main(String[] args) {
java.util.Scanner sc= new java.util.Scanner(System.in);
int n= sc.nextInt();
int i=n;
printNum(i,n);
}
}
문제 3: 역추적을 사용하여 1부터 n까지 인쇄
추신: f(i+1,N)을 사용할 수 없습니다.
그런 식으로 기본 사례가 참이라고 생각해야 합니다. 함수가 먼저 실행된 후 즉, 함수는 이전의 첫 번째 작업이 완료된 다음 함수가 호출되는 것과 달리 계속 함수를 호출한 다음 작업을 호출합니다.
public class Main
{
static void printNum(int i,int n){
if(i<1){
return;
}
else{
printNum(i-1,n);
System.out.println(i);
}
}
public static void main(String[] args) {
java.util.Scanner sc= new java.util.Scanner(System.in);
int n= sc.nextInt();
int i=n;
printNum(i,n);
}
}
Reference
이 문제에 관하여(재귀 101), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/swapnil_xi/recursion-101-2gcd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)