関数のメモリリーク?

前から気になっていたのだが再帰呼び出しする関数はCallする度にメモリ使用量が上がっていくようだ。
下のスクリプトを走らせながら タスクマネージャでメモリ使用量をチェックしていると分かるのだが、test1は 2回目以降は使用量が変わらないのに対し、test2は実行するたびにどんどん増えていく
仕様かバグか不明だが関数はできるだけ再帰しない作りにしたほうが良さそうかも。

#1::    OutputDebug, % test1(2,100)
#2::    OutputDebug, % test2(2,100)

test1(add,cnt)
{
    result=0
    loop,%cnt%
        result += add
    return result
}
test2(add,cnt)
{
    result=0
    if (cnt > 0)
        result := add + test2(add,cnt-1)
    return result
}