2017-01-24 10 views
-1

이 기능의 런타임을 확인해야했습니다. 나는 그 대답이 j-i 인 것을 안다. 그러나 나는 이유를 이해하지 못한다.런타임 분석 - 재귀 functiokn 예

는 J 가정> = 내가

def my_sum(i,j): 
    if i == j: 
     return i 
    mid = (i + j)//2 
    return my_sum(i, mid) + my_sum(mid + 1, j) 

사람이 어떤 생각 이유가 무엇입니까?

+0

을 설정 problaby하는 것입니다, 대답은 * J-I *이 없습니다. 코드를 분석하기 위해 수행 한 작업을 표시하십시오. "나는 왜 그런지 이해하지 못한다." 코드를 실행하거나 작업을 추적하거나 손으로 시뮬레이션하지 않은 것 같습니다. 그렇게하고 결과와 남은 혼란을 설명하십시오. – Prune

+0

이것은 테스트의 질문입니다. 테스트 후 그들은 이것이 답이라고 발표했다. –

답변

0

편집 :

return my_sum(i, mid) + my_sum(mid + 1, j) 

:

내 나쁜 didnt한다 당신이 "//"

문제로 보이는

사용하는 수익이다 사용하고 실현 예의 경우, i = 2, j = 4 :

어떤 일이 발생합니까 :

if i == j: ## false nothing happens here 
    return i 
mid = (i + j)//2 ## mid = (2+4)//2 = 3 
return my_sum(i, mid) + my_sum(mid + 1, j) ## return my_sum(2,3) + my_sum(4,4) 

my_sum (2,3): 
.... 
mid = (2+3)//2 = 2 
return my_sum (2,2) + my_sum(3,3) = 2 + 3 = 5 

my_sum(4,4) = 4 

너무 :

당신이 원하는 무엇을 problaby하지
my_sum (2,3) + my_sum(4,4) = 5 + 4 = 9 

.

그래서 여기에 문제가 반환 값 무엇보다도