Чему одинакова сумма всех чисел, написанных на экране при исполнении вызова
Чему одинакова сумма всех чисел, напечатанных на экране при исполнении вызова F(3)?
void F(int n)
cout lt;lt; n;
if (n gt; 1)
F(n - 1);
F(n - 3);
В данном задании при вызове функции сразу выводится "n", самостоятельно от условия "if (n gt; 1)". Проще всего нарисовать дерево.
Разберем построчно, не считая фигурных скобок:
1а. Вызываем F(3).
2а. Выводится "3" (на выводе: 3).
3а. Так как выполняется условие "if (n gt; 1)" (3 больше 1), то от F(3) идет две функции:
F(3-1) = F(2);
F(3-3) = F(0);
1б. Приступаем к F(2).
2б. Выводится "2" (на выводе: 3, 2).
3б. Так как производится условие "if (n gt; 1)" (2 больше 1), то от F(2) идет две функции:
F(2 - 1) = 1;
F(2 - 3) = -1;
1в. Вызывается F(1).
2в. Выводится "1" (на выводе: 3, 2, 1).
3в. Так как не производится условие "if (n gt; 1)" (1 не больше 1), то вызов прекращается и идет к F(-1).
1г. Вызывается F(-1).
2г. Выводится "-1" (на выводе: 3, 2, 1, -1).
3г. Так как не производится условие "if (n gt; 1)" (-1 не больше 1), то вызов прекращается и идет к F(0).
1д. Вызывается F(0).
2д. Выводится "0"(на выводе: 3, 2, 1, -1, 0).
3д. Так как не производится условие "if (n gt; 1)" (0 не больше 1), то вызов прекращается.
Итого, вывод: 3, 2, 1, -1, 0.
Суммируем данные числа: 3 + 2 + 1 - 1 + 0 = 5.
Ответ: 5.
-
Вопросы ответы
Статьи
Информатика
Статьи
Математика.
Физика.
Математика.
Разные вопросы.
Разные вопросы.
Математика.
Разные вопросы.
Математика.
Физика.
Геометрия.