すみません、こういうことで。

#include <stdio.h>

int f(int a, int b, int c, int d)
{
if (b == 0)
return a;
if (c == 0) {
return a+b;
} else if (d == 0) {
return f(a, f(a, b-1, c, 0), c-1, 0);
} else {
return f(a, b, f(a, b, c-1, d), d-1);
}

return 0;
}

int main(int argc, char** argv)
{
printf("%d\n", f(3, 3, 65, 2));
return 0;
}


間違いがなければ必ず有限時間で停止するはずなのですが・・・・・・。