Чему равна сумма всех чисел, напечатанных ** экране при выполнении вызова F(3)? void...

0 голосов
88 просмотров

Чему равна сумма всех чисел, напечатанных на экране при выполнении вызова F(3)?
void F(int n)
{
cout << n;<br> if (n > 1)
{
F(n - 1);
F(n - 3);
}
}


Информатика (20 баллов) | 88 просмотров
0

это ж на каком языке?

0

c++

Дано ответов: 2
0 голосов
Правильный ответ

Решение - в прилагаемом файле.

Ответ: 3+2+1-1+0 = 5


image
(194k баллов)
0 голосов

В данном задании при вызове функции сразу выводится "n", независимо от условия "if (n > 1)". Проще всего нарисовать дерево.

Разберем построчно, не считая фигурных скобок:

1а. Вызываем F(3).

2а. Выводится "3" (на выводе: 3).

3а. Так как выполняется условие "if (n > 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 > 1)" (2 больше 1), то от F(2) идет две функции:

F(2 - 1) = 1;

F(2 - 3) = -1;

1в. Вызывается F(1).

2в. Выводится "1" (на выводе: 3, 2, 1).

3в. Так как не выполняется условие "if (n > 1)" (1 не больше 1), то вызов прекращается и идет к F(-1).

1г. Вызывается F(-1).

2г. Выводится "-1" (на выводе: 3, 2, 1, -1).

3г. Так как не выполняется условие "if (n > 1)" (-1 не больше 1), то вызов прекращается и идет к F(0).

1д. Вызывается F(0).

2д. Выводится "0"(на выводе: 3, 2, 1, -1, 0).

3д. Так как не выполняется условие "if (n > 1)" (0 не больше 1), то вызов прекращается.

Итого, вывод: 3, 2, 1, -1, 0.

Суммируем данные цифры: 3 + 2 + 1 - 1 + 0 = 5.

Ответ: 5.

(8.6k баллов)