Как работает эта функция foo?
Эта программа на языке Си возьмет значения, хранящиеся в переменной a, и выведет их одно за другим.
#include <stdio.h> void foo(int n, int sum) { int k = 0, j = 0; if (n == 0) return; k = n % 10; j = n / 10; sum = sum + k; foo (j, sum); printf ("%d, ", k); } int main () { int a = 2048, sum = 0; foo (a, sum); printf("\n"); return 0; }
Выход:
2, 0, 4, 8,
Может ли кто-нибудь объяснить, как работает эта программа:
1) как он печатает значение, хранящееся в < a?
2) и в таком порядке: 2, 0, 4, 8, ?
3) Почему ценность сумма меняется, когда мы печатаем значения к?
Что я уже пробовал:
Когда функция foo выполняется:
1) впервые: n = 2048, k = 8, j = 204, sum = 8
2) во второй раз: n = 204, k = 4, j = 20, sum = 12
3) в третий раз: n = 20, k = 0, j = 2, sum = 12
4) в четвертый раз: n = 2, k = 2, j = 0, sum = 14
Если я заменю строку (присутствующую в функции foo):
printf ("%d, ", k);
с этим:
printf ("%d | %d, ", k, sum);
Выход:
2 | 14, 0 | 12, 4 | 12, 8 | 8,