-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 回答