##### Beginner, my recursion returns None, and related problem
 Beginner, my recursion returns None, and related problem zpacemanzpiff Unladen Swallow Posts: 2 Threads: 1 Joined: Jul 2020 Reputation: Jul-02-2020, 03:17 AM (This post was last modified: Jul-02-2020, 03:17 AM by zpacemanzpiff.) 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? Reply bowlofred Da Bishop Posts: 1,322 Threads: 3 Joined: Mar 2020 Reputation: Jul-02-2020, 03:46 AM (This post was last modified: Jul-02-2020, 03:47 AM by bowlofred.) A "set" in python is a specific thing, but you're not using them. You should refer to these as lists instead. This is happening because in the top-level call, the author's code always `return`s while yours doesn't. Imagine calling `max_check([1,2])`. You'll enter the function and at line 5 since there are two elements in the list, you'll skip the first block. Since 1 < 2, you'll enter the second block. At line 9, you'll change arr with pop(0), so arr will now be `[2]`. Then at line 10 you'll call `max_check([2])`. BUT, you don't do anything with the result of that call. Some answer comes back, and you don't capture it or return it. Instead you get to the end of the function and don't call return. Without this call, the function returns None. In the other function, the else clause has returns that are reached. Reply zpacemanzpiff Unladen Swallow Posts: 2 Threads: 1 Joined: Jul 2020 Reputation: Jul-02-2020, 04:25 AM (This post was last modified: Jul-02-2020, 04:29 AM by zpacemanzpiff.) Thank you. I'll work on my terminology. Also, adding `return arr` at the end of those blocks made my junk work. Please tell me if I'm understanding this correctly: originally, if I put in a list of 2 or more numbers, the list got passed to 8 or 11 repeatedly until it was down to one member. At that point, 5 happens, and that returned the right number...but only to whatever loop recursive step summoned it, not back out to main(). With returns added, the number gets safely passed back up to where I can work with it again. Oof, head hurts. Frankly, I'm still really hazy on recursion and what's talking to what. The materials thus far made sense as basically being step-a, step-b, do-step-c-until-d-happens sorts of processes. Ultimately, I know that beyond my confusion, this has to simply be more of that, but something about this isn't clicking for me. I'll keep at it, though. Thanks again! Reply

 Possibly Related Threads… Thread Author Replies Views Last Post I have an problem related to ujson in python dixitaditya248 2 834 Apr-12-2021, 08:11 AM Last Post: bowlofred Although this is a talib related Q it's mostly related to python module installing.. Evalias123 4 2,288 Jan-10-2021, 11:39 PM Last Post: Evalias123 small beginner problem FelixReiter 2 602 Nov-17-2020, 03:26 PM Last Post: FelixReiter Beginner having Syntax Error problem RyanHo 3 989 Sep-10-2020, 08:33 AM Last Post: cnull R-PYTHON INTEGRATION RELATED PROBLEM arnab93 0 715 Jun-05-2020, 02:07 PM Last Post: arnab93 Beginner problem, replace function with for loop Motley_Cow 9 2,030 Sep-13-2019, 06:24 AM Last Post: Motley_Cow recursion function (python beginner) everafter 3 1,308 Aug-19-2019, 07:24 AM Last Post: buran Beginner problem in python script Cedmo 3 1,356 Jul-04-2019, 08:22 PM Last Post: Cedmo Beginner Problem python 2.7 Jonathan_levy 2 1,619 Jul-04-2018, 08:46 PM Last Post: ichabod801 Beginner Problem python 2.7 Jonathan_levy 2 1,685 Jul-03-2018, 11:58 AM Last Post: gruntfutuk

Forum Jump:

### User Panel Messages

##### Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020