これは私のAPコンピュータサイエンスコースのサンプルプログラムであり、その制御の流れを理解することはできません。誰かがこのプログラムのコントロールの流れを説明できますか?
public static void mystery(int n)
{
System.out.println("mystery called with n = " + n);
if (n == 0)
{
System.out.println("n is zero so no more recursive calls!");
return;
}
mystery(n - 1);
System.out.println("We did it again with n = " + n);
}
public static void main(String[] args)
{
mystery(5);
}
それは、これを出力します
mystery called with n = 5
mystery called with n = 4
mystery called with n = 3
mystery called with n = 2
mystery called with n = 1
mystery called with n = 0
n is zero so no more recursive calls!
We did it again with n = 1
We did it again with n = 2
We did it again with n = 3
We did it again with n = 4
We did it again with n = 5
これまでのところ、私は再帰的な方法を理解し、どのようにそれを介して、自分自身を振り返り:
mystery(n - 1);
しかし、私はどのようにそれができる表示されません次の5つの文を出力します。
n is zero so no more recursive calls!
それが唯一の状態となるように論理的に、それはそうです:
We did it again with n = 0
誰もが学生を支援し、それが何をしたかどのように出力私に説明できますか?
例として、mystery(n - 1)を置き換えます。ミステリー(n--);どのようにして再びそれをしないかを見てください。 – misha130
n == 0のときに印刷前に戻り、n == 0のときは何も印刷されません。nは、 == 0なので、コードは実行されて印刷されます。 – user3284549