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

Ответы 2

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

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

    answer img
    • Автор:

      friendo
    • 6 лет назад
    • 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.

    answer img
    • Автор:

      mikey2vms
    • 6 лет назад
    • 0
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years