2016-10-31 5 views
0

Почему этот код не возвращает ни одного в Python 2? Однако, если я заменяю оператор return оператором печати i.e печатать сумму в самой функции, он дает правильный ответ. Почему это так? Я знаю, что это глупый вопрос, но я не могу понять это сам.Функция возвращает none вместо суммы списка

import math 
n=int(raw_input().strip()) 
temp = [5] 
arr=[] 
def cal(arr): 
    arr.append(int(math.floor(temp[-1]/2))) 
    temp.append(arr[-1]*3) 
    if len(arr)==n: 
     return sum(arr) 
    cal(arr) 
print cal(arr) 

ответ

2

Конец функции следует читать

if len(arr)==n: 
    return sum(arr) 
else:  
    return cal(arr) 

не так ли? Вы получаете None в качестве возвращаемого значения, если ваша функция заканчивается без возврата значения.

3

Вы должны

return cal(arr) 

в противном случае функция будет просто называть себя рекурсивно и возвращать None по умолчанию (вместо вычисленного результата).

Смежные вопросы