2016-10-31 5 views
0

이 코드가 파이썬 2에서 아무 것도 반환하지 않는 이유는 무엇입니까? 그러나 return 문을 print 문, 즉 함수 자체의 print sum으로 바꾼다면 올바른 답을 제공합니다. 왜 이렇게이다? 나는 그것이 바보 같은 질문 인 것을 안다. 그러나 나는 스스로 그것을 이해할 수 없다.목록 합계 대신 함수가 없음을 반환합니다.

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을 얻습니다.

return cal(arr) 

그렇지 않으면 함수가 단지 자신을 재귀 적으로 호출하고 (대신 계산 결과의) 기본적으로 None을 반환에

3

당신이 필요합니다.

관련 문제