Начал гуглить о рекурсии. Вроде сама идея понятна и т.д.. Но вот наткунся на пример который никак немогу понять, а именно:
class Factorial {
    // рекурсивный метод
    int fact(int n) {
        int result;

        if (n == 1)
            return 1;
        result = fact(n - 1) * n;
        return result;
    }
}
Factorial f = new Factorial();
// получим число, введенное пользователем
int usernumber = Integer.valueOf(editResult.getText().toString());
// вычисляем факториал и выводим результат в текстовой метке
textViewInfo.setText("Факториал " + usernumber + " равен " + f.fact(usernumber));
Вывод: Факториал 3 равен 6 Факториал 4 равен 24 Факториал 5 равен 120 и т.д. То что метод fact вызывает сам себя пока не дойдет до 1 понятно, но по идее после этого переменной result должно присвоиться занчение 2 и все. Но нет, после этого каким то волшебным образом значение переменной n увеличиваеться постепенно на 1.