Рубрики

C ++ | Отзывы | Вопрос 1

Каково возвращаемое значение f (p, p), если значение p инициализируется до 5 перед вызовом? Обратите внимание, что первый параметр передается по ссылке, тогда как второй параметр передается по значению.

int f(int &x, int c) {
   c  = c - 1;
   if (c == 0) return 1;
   x = x + 1;
   return f(x, c) * x;
} 

(А) 3024
(В) 6561
(С) 55440
(D) 161051

Ответ: (Б)
Объяснение: Поскольку c передается по значению, а x передается по ссылке, все функции будут иметь одинаковую копию x, но разные копии c.

f (5, 5) = f (x, 4) * x = f (x, 3) * x * x = f (x, 2) * x * x * x = f (x, 1) * x * x * х * х = 1 * х * х * х * х = х ^ 4

Поскольку x увеличивается при каждом вызове функции, он становится 9 после вызова f (x, 2). Таким образом, значение выражения x ^ 4 становится 9 ^ 4, что составляет 6561.

#include <stdio.h>

  

int f(int &x, int c)

{

    c  = c - 1;

    if (c == 0) return 1;

    x = x + 1;

    return f(x, c) * x;

}

int main()

{

    int p = 5;

    printf("%d", f(p, p));

}

Тест на этот вопрос

Рекомендуемые посты:

C ++ | Отзывы | Вопрос 1

0.00 (0%) 0 votes