某所で使ったネタ

再帰って最近のソレ的に必要ないと見てステられてるのかなぁ。
机上で不具合検出せよ、というお題で以下なソースを提示。

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;

フィルタというかハードルとして適切なのかどうかは、何度か試験をしてみないと何とも言えないですね。