def sum(n):
if n <= 1:
return(n)
else:
return n + sum(n-1)
이렇게 사용하면, n까지의 덧셈을 구하는거로 알고있는데 막상 쓰면서 보니까 재귀함수로 하는거 까지는 알겠는데
n을 3으로하고 실행하면 처음에 return에서 3 + sum(2) 이렇게면 3만남고 다음 2때 2 + sum(1)이고 되는거 까지는 알겠는데
그러면 n은 3, 2, 1이렇게 축적되면서 더해지는거야? 아니면 처음부터 return에서 더해지고 넘어가는거야?..
더해지고 넘어감
그러면은 처음에 sum(3)넣고 실행하면 return에서 3+2 되고, sum(2)가 또 실행된다는거야?
return이 3 + sum(2) 면 sum(2) 값을 구한다음 return으로 결과가 넘어갑니다
그냥 디버그 기능 있는 ide 툴로 한줄씩 실행시켜보면 이해가 바로 될듯
그것보다는 return 으로 반환하는 것보다 함수 실행이 먼저 일어나는 거임
return으로 반환되는 게 함수에서 제일 마지막에 실행되는 일이야
내가 이해한게 맞으면 return에서 3이면 3 + sum(2) = > 3+ 2 + sum(1) => 3 + 2 + 1 = > 끝 이게 맞는거지?
3 + sum(3-1)인데 sum(3-1)이 2 + sum(2 - 1)이 되고 다시 sum(2 - 1)은 1이 되기 때문에 리턴받은 결과를 더해 보면 차례대로 3 + 2 + 1이 됨
return이 원래 더해지는거야? 그냥 그 함수만 출력하고 끝이아니라? 아니면 return + < +때문에 더해지는건가.. ㅠㅠ.. 미안..이해가 부족한가봐
헷갈리는거 같으니까 괄호 넣어서 설명해 주자면 (3 + (2 + (1))) 이 되는거
내가 이해한게 맞으면 return에서 3이면 3 + sum(2) = > 3+ 2 + sum(1) => 3 + 2 + 1 = > 끝 이게 맞는거지?
좀 더 엄밀히는 화살표가 반대로 되야 하지 <=3 + <=2 + <=1
왜? 3부터 시작아니야 ?
Sum(3)이면 return3이니까 3 , 3 + 2 , 3+ 2 + 1 이렠되는거아냐?
사람이 손으로 계산식 쓸때는 왼쪽항이 3이라 그게 시작이라고 느끼지만 컴퓨터가 계산할때는 거꾸로 1 + 2 + 3을 하니까
(3 + (2 + (1)) 여기에 괄호 쓴게 그런 의미임 괄호 계산 순서대로
아 그럼 함수는 3 2 1 순이지만 계산은 1 + 2 + 3 이라는거야?
ㅇㅇ return 1 return 2 + 1 return 3 + 2 + 1 순서
고마워! 일요일 마무리잘해!