Так n и не должно меняться, оно же задаёт сколько раз число должно быть умножено на себя. Разница между моим вариантом и вариантом из учебника, в том, что моя функция задаётся без параметров и отсылается напрямую к внешним переменным, вот так делать плохо. Здесь я согласен.