>>113 >>128
アルゴリズムどうにかする方が先だろ。
else { //d>0
return f(a, b, f(a, b, c-1, d), d-1);
}

ここ,aやbが変化しないから,まじめに再帰させる必要がない。
a+bの値だけチェックして,処理省略しろ。