Ad
  • Custom User Avatar

    This is not using recursion since it is not a function that calls itself until some stop condition is met.
    This is Python closure. The b parameter of each of the operand functions becomes a context of the function instance returned from those functions.
    In other words, the parameter is captured into the state of the generated lambda function.

  • Custom User Avatar

    This comment is hidden because it contains spoiler information about the solution

  • Custom User Avatar

    Yes - recursions are fascinating, however, be careful with them. Recursions could be double-edged swords...
    Consider that each recursion level costs in memory on the stack. So if you have too many levels (self invocation) you would end up with a crash on lack of memory (or slowing down your whole computer as your code exhausts whole of the available memory).
    In this specific case it is probably fine - we assume a number with a reasonable number of digits.

  • Custom User Avatar

    Note that this implementation has very high memory cost.
    You accumulate the multiples list with all the numbers in the range before summing up - each number in the list holds an integer value type of memory.
    Consider what would happen if you run this with a very large number...