間違ってない
(非線形)再帰に関してはgcc/g++の最適化が進んでいる