Robisz błąd próbując zmusić funkcja średnia do bycia rekurencyjną. Owszem to, że użyłeś iteracje w kontekście dodawania oznacza, że możesz rekurencyjnie zakodować dodawanie i następnie użyć w definicji średniej. Spójrz na ten poniższy kod:
def avg(xs):
return 1.0 * sum(xs) / len(xs)
print avg([1, 2])
Tutaj funkcja sum może być zakodowana zarówno iteracyjnie jak i rekurencyjnie. Natomiast funkcja średnia niezależnie od podejścia ma tę samą definicję. Toteż upomnę, że nie należy bezrozumnie używać mechanizmów na siłę, inaczej tylko sobie zaszkodzisz :)