再帰とか末尾再帰に関しては、理解途中です。ただ、普通の書き方をすると、スタックが消費されるし、無駄が多い、それはなんとなくわかります。同じ計算を何回もしているし、例えば5回再帰の呼ぶとすると、最後のリターンが行われないと計算が終われない。それを回避するのが、末尾再帰だと思います。
理解途中でやってみたのが、上です。VBでもそれらしくは書けます。1から10迄の和とフィボナッチ数列の10番目が共に55です。(笑)単なる偶然でしょう。ここららはもしかしたらですが、末尾再帰では最後のリターン(上だとaccとかa)が答えになっていると思いますが、確かめていないので、推測です。