I need to define a function called rec_range(n) which takes a natural number and returns a TUPLE of numbers up to the number n.
i.e. rec_range(5) returns (0,1,2,3,4) rec_range(1) returns (0,)
This is what I have come up with so far.
def rec_range(n):
"""takes a natural number n and returns a tuple of numbers starting with 0 and ending before n
Natural Number -> Tuple of Numbers"""
if n == 0:
return 0
else:
return (rec_range(n-1), )
This works for rec_range(1).
***Restrictions are: must be defined recursively, cannot use lists, loops or use the existing range() function
this is simple one:
How about a one-liner:
Or with lambdas:
I would write it as follows:
This can also handle negative arguments.
This is nice and concise, I think:
Basically you recurse downwards until you reach 1, and for each recursion add one less than the number that you just recursed on position wise to your tuple.
Outputs:
Just keep concatenating tuples for the number that is one less until one is reached: