再帰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);
    }
}