某所で使ったネタ
再帰って最近のソレ的に必要ないと見てステられてるのかなぁ。
机上で不具合検出せよ、というお題で以下なソースを提示。
public class Factorial { public int calc(int number) { if (number == 1) { return 1; } return calc(--number) * number; } /** * @param args */ public static void main(String[] args) { System.out.println(new Factorial().calc(5)); } }
デクリメント演算の副作用が、というソレが回答なのですが、こうしたらループするんですねww
return calc(number--) * number;
感覚的にこうでしょ、というあたりで慣れてるかどうかが分かるんですが
return calc(number - 1) * number;
フィルタというかハードルとして適切なのかどうかは、何度か試験をしてみないと何とも言えないですね。