Jul-02-2020, 03:17 AM
Absolute beginner at coding attempting to learn Python. Current chapter of "Slither into Python" is on recursion; my current task is to identify the largest number in a set recursively. The author's example works; mine does not. I don't understand why mine doesn't work or why the author's does work. Mine returns "None" despite a few attempts to define my way out of my issue. The author's returns the correct number even though it looks like it's winding up with the wrong one.
import sys def max_check(arr): # My version, always returns None print(arr) if len(arr) == 1: print(arr) # It looks like the largest number is here! return arr[0] # But now it's gone! elif arr[0] < arr[1]: # Not very tidy, but is this approach a problem? arr.pop(0) max_check(arr) elif arr[0] >= arr[1]: arr.pop(1) max_check(arr) def maximum(lst): # Author's version, returns correct number print(lst) if len(lst) == 1: print(lst) # Why doesn't this print the largest number to console? return lst[0] else: m = maximum(lst[1:]) if m > lst[0]: return m else: return lst[0] def main(): print(max_check([1, 2, 3, 2])) print(maximum([1, 2, 3, 2])) if __name__ == "__main__": main()Gives me...
Output:[1, 2, 3, 2]
[2, 3, 2]
[3, 2]
[3]
[3] # Mission accomplished?
None # Nope.
[1, 2, 3, 2]
[2, 3, 2]
[3, 2]
[2]
[2] # huh?
3 # huh??
I didn't really know what to search for, because I don't know what I'm failing to understand. Help?