재귀 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);
    }
}


좋은 웹페이지 즐겨찾기