'''
Created on Nov 6, 2011

@author: rodger
'''
# Problem: Given a list of numbers, add up the even ones

def SumUpEvens(data):
    # data is a list of integers
    total = 0
    for num in data:
        if num%2==0:
            total += num
    return total

def SumUpEvensRec(data,index):
    # data is a list of integers
    # notice no loop here
    total = 0    
    if index >= len(data):
        return 0
    num = data[index]
    if num%2==0:
        total += num 
    total += SumUpEvensRec(data,index+1)
    return total
 
def PrintOnePerLine(data):
    for num in data:
        print num
        
def PrintOnePerLineRec(data, index): 
    if index < len(data):
        print data[index]
        PrintOnePerLineRec(data,index+1)
        
def PrintOnePerLineRec2(data, index): 
    # swap the two lines in the if, what happens?
    if index < len(data):        
        PrintOnePerLineRec2(data,index+1)
        print data[index]
        
def Mystery(num):
    if num > 0:
        return 1 + Mystery(num/2)
    else:
        return 2 + num
        
def testing():
    data = [5, 6, 9, 1, 3, 7, 8, 2] 
    print "SumUpEvens is ", SumUpEvens(data)
    print "SumUpEvensRec is ", SumUpEvensRec(data,0)
    print "PrintOnePerLine"
    PrintOnePerLine(data)
    print "PrintOnePerLineRec"
    PrintOnePerLineRec(data,0)
    print "PrintOnePerLineRec2"
    PrintOnePerLineRec2(data,0)
    print "Mystery(9)", Mystery(9)
    print "Mystery(3)", Mystery(3)
    print "Mystery(18)", Mystery(18)  
            
            
if __name__ == "__main__":
    testing()