PUERTA | GATE-CS-2017 (Conjunto 1) | Pregunta 39

Considere las funciones de C foo y bar dadas a continuación:

int foo(int val)
{
    int x = 0;
    while (val > 0)
    {
        x = x + foo(val--);
    }
    return val;
}

int bar(int val)
{
    int x = 0;
    while (val > 0)
    {
        x = x + bar(val-1);
    }
    return val;
}

Las invocaciones de foo(3) y bar(3) darán como resultado:

(A) Retorno de 6 y 6 respectivamente
(B) Ciclo infinito y terminación anormal respectivamente
(C) Terminación anormal y ciclo infinito respectivamente
(D) Ambos terminan anormalmente

Respuesta: (C)
Explicación: En la función foo cada vez en el while foo se llama con el valor 3 porque val se pasa con el operador de decremento posterior, por lo que se pasa el valor 3 y val se decrementa más tarde. Cada vez que se llama a la función se crea una nueva variable ya que la variable pasada se pasa por valor, con el valor 3. Por lo que la función se cerrará abruptamente sin devolver ningún valor.

En la barra de funciones, en el valor del ciclo while, el valor de la variable val no disminuye, permanece solo en 3. La función de barra en el bucle while se llama con val-1, es decir, 2, pero el valor de val no se reduce, por lo que dará como resultado un bucle infinito.
Cuestionario de esta pregunta

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *