재귀도 존나 개념자체는 쉬운거같은데 이걸 응용해서 만드는게 존나 어려운거같음
분할정복도 걍 반으로 나누고 나누고 나눠서 맨아래서부터 올라온다고 생각하면 편하긴한데
이걸 코드로 마주하면 너무 어려운거같다..
종만북 177페이지인데
1부터 n까지의 합 구하는 함수가
int fastSum(int n) {
if (n == 1) return 1;
if (n % 2 == 1) return fastSum(n - 1) + n;
return 2 * fastSum(n / 2) + (n / 2) * (n / 2);
}
이렇게 표현될수있다는데 왜 이렇게되는지 책 설명을 읽어도 도저히 모르겠음... 왜이렇게되는지 누가좀 도와져..
1 2 3 4 5....를 순서대로 더하니까 이걸 격자무늬 칸에 1행 2행 3행...부터 1 2 3칸씩 채워본다고 하면. 직각삼각형 모양이 될거임. n/2지점에서 수선을 내려보면 삼각형 두개와 정사각형이 나옴 - dc App
삼각형 두개는 각 1~ n/2의 총합, 정사각형은 n/2의 제곱임을 알 수 있음. - dc App
홀수면 적용이 안되니까 홀수라면 바로 아래단계 합에 n 더하고. 아래단계는 짝수니까 이거 적용가능.ㅇㅇ - dc App
근데 n(n+1)/2 식 하나면 바로나오는데 왜...음....흠.... - dc App
그건또 머임? - dc App
머고 대댓 열심히달길래 고닉이 질문한줄알았노 - dc App
와 지린다 친구들 고마워 ㄳㄳ
파이썬키고 N = N+1 조지면안대?