← Back

Home β€Ί Problems β€Ί Factorial of 7

Factorial of 7

🧠 Predict the output Topic: recursion Difficulty: medium Free

What this problem practises

Recursion needs a base case that actually triggers. A missing or drifting base case ends in RecursionError, and the call-stack order decides which value comes back first when predictions are made by eye.

This is an output-prediction problem: read the snippet carefully and write down exactly what it prints before anything runs. These questions are interview staples because they test whether you know the language rules, or merely recognise their syntax.

Difficulty: medium β€” expect to hold two interacting rules in your head at once, such as a boundary combined with a mutation.

The challenge

What will this program print? Type the exact output.

The code runs in PyDebug’s in-browser compiler. Open the problem, run the snippet, watch the exact error or output, and keep iterating until it is right. Signed-in solves count toward XP and your daily streak.

The snippet

The interactive editor pre-fills exactly this code β€” read it, then submit your prediction:

def fact(n):
    if n <= 1:
        return 1
    return n * fact(n - 1)
print(fact(7))

Understand the rule

Recursive numeric functions build up deferred multiplications on the call stack until they hit their base case, then unwind in reverse order. Tracing `factorial(7)` cleanly requires checking the exact base-case condition (`n <= 1` vs `n == 0`) and multiplying step by step as frames return.

How to trace it

  1. Each call `fact(n)` checks the base case first; while `n > 1`, it pauses and calls `fact(n - 1)`.
  2. Once `fact(1)` (or `fact(0)`) hits the base case and returns `1`, no deeper recursive calls are made.
  3. Unwind upward: `2 * 1 = 2`, `3 * 2 = 6`, `4 * 6 = 24`, `5 * 24 = 120`, `6 * 120 = 720`, and finally `7 * 720 = 5040`.
  4. Verify whether the base case returns `1` β€” a buggy base case returning `0` collapses the entire product to `0`!

Common wrong fixes

Rule to remember

Memorize `5! = 120` and `6! = 720` as checkpoints, and always verify the base case return value before multiplying.

Solve it in the interactive editor β†’

More problems

Keep going