Recently I took the test for Computer Science and I got a Level 3... I couldn't figure out the Level 4 Question and I found it quite interesting and could anyone explain me how it works..?
How many '1' s are printed out when you call foo(5)?
# python code start
def foo(n):
count = 1
if n > 0:
count += foo(n - 1) + foo(n - 1)
print '1'
return count
Easy Math Editor
This discussion board is a place to discuss our Daily Challenges and the math and science related to those challenges. Explanations are more than just a solution — they should explain the steps and thinking strategies that you used to obtain the solution. Comments should further the discussion of math and science.
When posting on Brilliant:
*italics*
or_italics_
**bold**
or__bold__
paragraph 1
paragraph 2
[example link](https://brilliant.org)
> This is a quote
\(
...\)
or\[
...\]
to ensure proper formatting.2 \times 3
2^{34}
a_{i-1}
\frac{2}{3}
\sqrt{2}
\sum_{i=1}^3
\sin \theta
\boxed{123}
Comments
:) There's a trick.
Log in to reply
So tell me please :) I know we can directly execute it but I want to understand how it works..
Have you tried doing it for n=1 and n=2?
Log in to reply
Nope.. I'm not so good at programming so can you please explain me this one from the beginning..?
Log in to reply
If you call
foo(1)
, it is greater than zero and, so, the function passes the if statement. It the adds2*foo(0)
(which needs to be called) tocount
and prints 1.When it calls
foo(0)
, 0 is not greater than 0 and, so, theif
statement is not passed. The function then runs the code that appears after theif
statement, where it returns the current value ofcount
which is 1 and prints 1. However,foo(0)
was called twice (count += foo(0) + foo(0)
), so it prints 1 twice.So, for
foo(1)
, we print 1 a total three times.If we called
foo(2)
, this same kind of branching process would occur. I.e., we'd print 1, then we'd callfoo(1)
twice, which would print 1 twice, then for eachfoo(1)
, we'd callfoo(0)
twice (a total of 4foo(0)
) calls, which would print 1 four times. Making a total of 7. In general, callingfoo(n)
, we print 1 a total of 2n+1−1 times.Log in to reply
Log in to reply
foo
n to explain.Log in to reply
the answer is exactly 28