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
- Each call `fact(n)` checks the base case first; while `n > 1`, it pauses and calls `fact(n - 1)`.
- Once `fact(1)` (or `fact(0)`) hits the base case and returns `1`, no deeper recursive calls are made.
- Unwind upward: `2 * 1 = 2`, `3 * 2 = 6`, `4 * 6 = 24`, `5 * 24 = 120`, `6 * 120 = 720`, and finally `7 * 720 = 5040`.
- Verify whether the base case returns `1` β a buggy base case returning `0` collapses the entire product to `0`!
Common wrong fixes
- Stopping multiplication one step early at `6! = 720` or miscalculating `7 * 720` under time pressure.
- Overlooking an atypical base case (for example, returning `2` when `n == 2` or `0` when `n == 0`).
- Assuming `print()` runs on every recursive frame when `print(fact(7))` actually prints only the final returned integer.
Rule to remember
Memorize `5! = 120` and `6! = 720` as checkpoints, and always verify the base case return value before multiplying.
More problems
Keep going
- Output-prediction strategies β how to predict tricky snippets without running them.
- Browse every recursion problem in this topic.
- Common Python errors and what they actually mean, plus the Python glossary for any term used on this page.