Чему одинакова сумма всех чисел, написанных на экране при исполнении вызова

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

cout lt;lt; n;
if (n gt; 1)

F(n - 1);
F(n - 3);

Задать свой вопрос
Вика Лишенко
это ж на каком языке?
Екатерина Ковтуняк
c++
2 ответа

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

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

В данном задании при вызове функции сразу выводится "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.

, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт