Вы получите тот же результат, с последующим выполнением функции:
int f(int n) {
if (n)
return n%10 + f(n/10);
return 0;
}
В вашем случае поведение будет таким же, и вот почему. Во-первых, когда вы инициализируете статическую переменную int, значение по умолчанию равно 0 (в отличие от просто объявления int внутри тела функции). Во-вторых, единственное значение п, когда ваша функция просто принимает a
значение и не присваивает это 0, потому что, когда линия a=n%10 + f(n/10)
оценивали, рекурсивный f()
вызов происходит назначение перед к a
, и его значение остается неизменным до того f(0)
вызова.