Предмет: Информатика, автор: alex70russ

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


xehuwejev: c++

Ответы

Автор ответа: petyaGavrikov
1

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

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

Приложения:
Автор ответа: Nata9911
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.

Приложения:
Похожие вопросы
Предмет: Математика, автор: danshinadasha10
Предмет: История, автор: popelow2004