2017-06-03 4 views
-3

n=10を入力すると出力は1024になります。この回答を得るには、このコードをどのようにトレースするのかを教えてください。 n行くの入力がn = 10の場合、この再帰的方法をどのようにトレースするのですか

static long mystery(int n) { 
    if (n==0) 
    return 1; 

    long temp = mystery(n/2); 
    if (n%2==0) 
    return temp*temp; 
    else 
    return 2*temp*temp; 
} 
+2

使用紙と鉛筆とは、変数の値を書き留め。 – Henry

+0

なぜコードを「トレース」したいですか?あなたは再帰の仕事について混乱していますか? –

+0

少し、はい。私も明日の試験があります。これは以前の試験の質問でした。 –

答えて

0

値:基本的な整数の除算の算術演算に基づいて
10 -> 5 -> 2 -> 1 -> 0

関数の戻り値は、したがって、反対の順序である:コンピュータの手順をシミュレートしながら
1 -> 2 -> 4 -> 32 -> 1024
0 1 2 5 10 (values of n)

+0

返り値から1024をどう取得したか説明してください。 –

+0

n = 10、ミステリー(5)= 32、10%2 == 0の場合、32 * 32 = 1024を返します。 – luk2302

関連する問題