1

メソッド enigma が次のように定義されているとします。

public int enigma(int n)
{
    int m;

    while (n >= 10) {
        m = 0;
        while (n > 10) {
            m += n % 10;
            n /= 10;
        }
        n = m;
    }
    return (n);
}

enigma(1995) の値は? enigma(1995) の値が 3 であることはわかりました。

4

3 に答える 3

3

あなたは明らかに順調に進んでいますが、私はあなたのためにすべてを解決したくはありません。

内側のループの開始時、n = 1995およびm = 0. ループの最後ですでにわかっているように、n = 199, m = 5. ループは再び先頭から始まります... n = 199, m = 5... など

于 2012-05-01T15:47:39.053 に答える
0

外側の while はn、10 未満になるまで実行されます。

内側のループは がn10 以下になるまで実行され、次に to の値を割り当ててmn外側のループを再度評価できるようにします。

内側のループで何が起こるか? を 10mで割った余りをインクリメントし( の場合は 5 )、 を除算の (整数) 結果に設定します (今は)。これが数回繰り返されます。nn==1995nn==199

n=1995 => m=5,n=f199
n=199  => m=5+9=14,n=19
n=19   => m=14+9=23,n=1

nは 10 より大きくないため、内側のループが終了し、( ==23) にn設定されます。これをもう一度実行します。m

n=23 => m=3,n=2

nが 10 以下になったので、内側のループが終了し、( ==3)nに設定されます。m現在nは 10 未満なので、外側のループが存在し、n(==3) という結果にたどり着きました。

于 2012-05-01T15:46:23.713 に答える
0

Eclipse (Java) インストールを使用し、静的なメイン メソッドを作成して関数を呼び出すだけです。

デバッガーを使用すると、ステップバイステップで変数を監視して何でも実行できます

于 2012-05-01T15:52:15.303 に答える