たらい回さない関数
聞くところによりますと、たらい回し関数の正体は だそうですが、竹内関数(という名前でいいのでしょうか? z を返すバージョンの関数)の正体は下の表でよろしいのでしょうか。
tak(x,y,z) | 領域 |
z | x<=y |
y | y<x, y-1<=z<=x |
y-ceil(y-z)+1 | z+1<y<x, ceil(x-y)mod 2=0 |
y | z+1<y<x, ceil(x-y)mod 2=1 |
x | x-1<=y<x<z |
y | y+1<x<z<=x+1 |
x | y+1<x<z-1, ceil(z-x)mod 2=0 |
x-ceil(x-y)+1 | y+1<x<z-1, ceil(z-x)mod 2=1 |
ceil は天井関数です。
追記: [cs/9301113] Textbook examples of recursion の 11 ページ目