2016-01-11 2 views
1

Пример с для цикла для нахождения наименьшего числа и его положение:Можно ли перечислять в рекурсии? Какова будет рекурсия этого примера?

def smallest(list): 
    smallest = 1000000 
    smallestposition=-1 
    for pos,value in enumerate(list): 
     if(value < smallest): 
      smallest = value 
      smallestposition = pos 
    return smallest,smallestposition 
print smallest([23,444,222,111,56,7,45]) 

ответ

2

Там нет смысла использовать enumerate() в рекурсивной функции, так как enumering итерация, который является «вопреки» рекурсии.

рекурсивная версия этой функции может быть:

def smallest(lst, idx=0): 
    s = (lst[idx], idx) 
    if idx == len(lst) - 1: 
     return s 
    return min(s, smallest(lst, idx + 1))