-1
import java.math.BigInteger;
import java.util.Arrays;
import java.util.Scanner;

public class Java {

    public static int numberOfLoops;
    public static int numberOfIterations;
    public static int[] loops;

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        System.out.print("N = ");
        numberOfLoops = input.nextInt();

        System.out.print("K = ");
        numberOfIterations = input.nextInt();

        input.close();

        loops = new int[numberOfLoops];
        System.out.println("main START");
        nestedLoops(0);
        System.out.println("main END");
    }

    public static void nestedLoops(int currentLoop) {
        System.out.println("nestedLoops");
        System.out.println("currentLoop " + currentLoop);
        if (currentLoop == numberOfLoops) {
            printLoops();
            return;
        }

        for (int counter = 1; counter <= numberOfIterations; counter++) {
            System.out.println("nestedLoops in LOOP");
            System.out.println("currentLoop in LOOP " + currentLoop);
            loops[currentLoop] = counter;
            nestedLoops(currentLoop + 1);

        }
    }

    public static void printLoops() {
        System.out.println("printLoops");
        for (int i = 0; i < numberOfLoops; i++) {
            System.out.printf("%d", loops[i]);
        }
        System.out.println();
    }

}

こんにちは、みんな。私はここに新しく、これが私の最初の投稿です。

私の質問は:

N = 2 および K = 4 の場合、最初に currentLoop を返した後、1 を続行してメソッド 0 に渡すのはなぜですか?

ありがとう、ニコラ

4

1 に答える 1

1

あなたの質問を完全に理解しているかどうかはわかりません..しかし

電話すると

nestedLoops(0);

currentLoop = 0 で nestedLoops 関数に入ります。この関数内で、

nestedLoops(currentLoop + 1);

そしてそれがあなたが得る理由です

nestedLoop(1) 

あなたがあなたの中にいる間に呼び出されました

nestedLoop(0) 

あなたの質問を誤解した場合はお知らせください。


編集:

いつ

nestedLoops(1) 

呼ばれる、私たちは呼ぶ

nestedLoops(2)

右?nestedLoops(2) 内の currentLoop と numberOfLoops を比較すると、どちらも 2 であるため、

printLoops();

printLoops が完了したら、戻ります

nestedLoops(2)

ただし、printLoops() の後に、

return;

したがって、私たちはから戻ります

nestedLoops(2) に戻ります

nestedLoops(1)

nestedLoops(2) が呼び出された場所。

それは理にかなっていますか?

于 2013-06-18T21:16:14.313 に答える