One Two Three plus - Review
문제 복기
재귀 함수를 구현하기에 앞서, 함수에 매개변수로 어떤 값을 전달할 것인지, 다음 경우를 호출하는 경우 코드를 어떻게 구현할 것인지 생각해본다.
현재 어떤 수(i)를 넣을지 결정하면, sum에 i를 더한 현재까지의 합을 다음 경우 호출에 인자로 넘겨주어야 한다. - go(sum+i,num)
틀린 이유
sum+i는 다음 경우를 호출할 때 한번만 필요하다.
for문 안에서 sum += i로 받은 sum에 i를 계속 더해주니 이것은 sum = sum+1 / sum = sum + 2, sum = sum + 3이 아니라 계속해서 증가하게 되고, 계속 증가하는 부정확한 sum을 매개변수로 넘겨주니 조건을 제대로 구현하더라도 정답이 나오지 않는다.
sum 에 i를 계속 더해주는 것이 아니다. => sum = 1이라고 하면 for(int i=1;i<=3;i++)을 돌면서 sum = sum+1 = 1+1 sum = sum+2 = (1+1)+2 = 4 sum = sum+3 = (1+1)+2+3 = 7...이런식으로 증가한다.
sum은 for문 내에서 i값에 따라 계속해서 증가하는 변수가 아니라, 다음 경우(다음 수를 정할 때)를 호출할 때, 현재 수를 더해서 넘겨주는 값이여야한다!
Last updated