cppadvanced10 minutes

Predict Output of Complex Recursive and Bitwise Operations in C++

Analyze a complex C++ program that uses recursion combined with bitwise operations and tricky short-circuit logic. Predict the exact output produced by the program without running it.

Challenge prompt

Given the following C++ code, determine the exact output printed to stdout. Explain the reasoning behind the output considering recursion, bitwise operations, and short-circuit evaluation. #include <iostream> int func(int x) { static int state = 1; if (x <= 0) return 0; int result = 0; if ((x & 1) && (state++ < 4)) { result += func(x - 2); result += state; } else { result += func(x - 1); result += state * 2; } return result; } int main() { std::cout << func(5) << std::endl; return 0; }

Guidance

  • Trace the recursive calls carefully, keeping track of the static state variable's value at each stage.
  • Pay special attention to short-circuit evaluation of the condition in the if statement.
  • Remember how bitwise AND (&) works to check the parity of x.
  • Consider the order of operations inside each recursive call.

Hints

  • The static 'state' variable persists and increments only under certain conditions — track that closely.
  • When x is odd, the first condition short-circuits if 'state < 4' is false.
  • Calculate smaller inputs first to build the solution upwards.

Starter code

#include <iostream>

int func(int x) {
    static int state = 1;
    if (x <= 0) return 0;
    int result = 0;
    if ((x & 1) && (state++ < 4)) {
        result += func(x - 2);
        result += state;
    } else {
        result += func(x - 1);
        result += state * 2;
    }
    return result;
}

int main() {
    std::cout << func(5) << std::endl;
    return 0;
}

Expected output

14

Core concepts

recursionbitwise operationsstatic variablesshort-circuit evaluation

Challenge a Friend

Send this duel to someone else and see if they can solve it.