import random

# iterative solution to the number of odds numbers in a list
def numodds(alist):
    total = 0

    for item in alist:
        if item % 2 == 1:
            total += 1

    return total

# return the number of odd numbers in alist starting at index starti
def numoddsR(alist, starti):

    # check base case (we are at the last element)
    if starti == len(alist) - 1:
        if alist[starti] % 2 == 1:
            return 1
        else:
            return 0
    else:
        # starti < len(alist) - 1
        if alist[starti] % 2 == 1:
            return 1 + numoddsR(alist, starti + 1)
        else:
            return numoddsR(alist, starti + 1)


def numodds2(alist):
    return numoddsR(alist, 0)
##
##mylist = []
##for _ in range(20):
##    num = random.randint(1,100)
##    mylist.append(num)
##
##print(mylist)
##iterative_answer = numodds(mylist)
##recursive_answer = numodds2(mylist)
##print(f'iterative answer = {iterative_answer}, recursive answer = {recursive_answer}')


def sumup(alist):

    total = 0
    
    for num in alist:
        total = total + num
        #total += num   
    
    return total

# returns the total of numbers in alist starting at index starti
def sumupR(alist, starti):

    if starti == len(alist) - 1:
        return alist[starti]
    else:
        # starti < len(alist) - 1
        return alist[starti] + sumupR(alist, starti + 1)


def sumup2(alist):
    return sumupR(alist, 0)


mylist = []
for _ in range(20):
    num = random.randint(1,100)
    mylist.append(num)

print(mylist)
print(sum(mylist))
iterative_answer = sumup(mylist)
recursive_answer = sumup2(mylist)
print(f'iterative answer = {iterative_answer}, recursive answer = {recursive_answer}')
