たらいまわし関数

C言語による」の方にはのっていたたらいまわし関数が本書で消えていたのを残念に思う。


という記事を見て、たらいまわし関数って何だろうと。
まったく知らなかったので、あえて調べず、プログラムを組むでもなく、手作業で意味を解析してみました。
いくつかの具体例を求めてみたり、証明を試みたりしたわけですけれども。どうしても意味がわからない。解答っぽいものは得られたものの、何のための関数がさっぱりわからない。
仕方なしにググって見ると、いきなり

たらいまわし関数/* 再帰的に定義された次のような関数。特に用途はない。 */


orz


いや、うすうす感づいてましたけどね。
明らかに無駄がありすぎだろうと。
多分わざと複雑にしてるんだろうと。
気づいてはいましたけれども!
A4用紙いっぱいに手計算やら証明やらを展開した手前認めたくはなかった!!


結局のところ、こいつはベンチマーク関数らしいです。
再帰関数が爆発的に呼び出されるため、処理に時間がかかると。
えぇ実感してます。
ちなみに得られた結果:

  tak(A, B, C) {
    if (A <= B) {
      return B;
    } else {
      if (B <= C)
        return C;
      else
        return A;
    }
  }


俺の脳のベンチマーク結果は泣きそうなので書きません。