プログラム板雑談スレッド Part 3
■ このスレッドは過去ログ倉庫に格納されています
0238デフォルトの名無しさん
2008/06/15(日) 15:53:30難しく考えるから難しいんだと思うけどねぇ。
例えば、これでも難しい?
int mul(int number, int iteration)
{
if (iteration == 1) return number; // 「繰り返し回数(iteration)」が1回なら「指定数値(number)」を(そのまま)返す
return number + mul(number, iteration - 1); // (そうでないなら)「指定数値」と「繰り返し回数」を一つ減らして自身を呼び出した結果を足して、その値を返す
}
例えばmul(5, 3)なら、
(最初の行は該当しないので)5とmul(5, 3 - 1)の結果を足して返す
と言うことになる。
で、mul(5, 3 - 1)は当然mul(5, 2)だから、
(最初の行は該当しないので)5とmul(5, 2 - 1)の結果を足して返す
となる。
更に、mul(5, 2 - 1)はmul(5, 1)だから
(最初の行に該当して)5を返す
となる。
つまり、mul(5, 3)に立ち返れば
5とmul(5, 3 - 1)の結果を足して返す
↓
5と 5とmul(5, 2 - 1)の結果を足して返す を足して返す
↓
5と 5と 5を返す を足して返す を足して返す
となって、
5と 5と5を足して返す を足して返す
↓
5と5と5を足して返す
となる。
こんだけ。ちっとも難しくは無いでしょ。めんどくさいけどw
■ このスレッドは過去ログ倉庫に格納されています