1~n ๊นŒ์ง€ ๋”ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์งœ๋ผ


int SumToN_1(int N)

{

int result = 0;

for (int i = 1; i <= N; ++i)

{

result += i;

}

return result;

}


int SumToN_2(int N, int* result)

{

if (N < 1)

{

return *result;

}


*result += N;


return SumToN_2(--N, result);

}


int SumToN_3(int N)

{

return ย N * (N + 1) / 2;

}



1๋ฒˆ์€ ๋ฐ˜๋ณต๋ฌธย 2๋ฒˆ์€ ์žฌ๊ท€ํ•จ์ˆ˜ย 3๋ฒˆ์€ ์ˆ˜์‹


์ด์ •๋„ ์ฐจ์ด๋ฉด ์–ด๋–ค์ง€ ์•”? 3๋ฒˆ์งธ๋Š” JAVA์—์„œ ์ฒซ๋ฒˆ์งธ๋Š” ์–ด์…ˆ๋ธ”๋ฆฌ๋กœ ์งœ๋„

๋ฐ˜๋ณตํ•ด์•ผํ•˜๋Š” ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚˜๋ฉด ์ž๋ฐ”๊ฐ€ ์–ด์…ˆ๋ธ”๋ฆฌ๋ณด๋‹ค ๋น ๋ฅธ๊ฑฐ์ž„.


์˜คํžˆ๋ ค ์ฝ”์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๋Š” ๊ณณ์—์„  ์ €๋Ÿฐ์‹์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ณ„๋กœย ์“ธ ํ•„์š”๊ฐ€ ์—†์Œ.


๊ธฐํšํ•˜๋Š” ์‚ฌ๋žŒ, ๊ตฌํ˜„ํ•˜๋Š” ์‚ฌ๋žŒ์ด ์“ธ์ผ์ด ๋งŽ์ง€;;

ํ†ต๊ณ„, ์ˆ˜์—ด ๊ฐ™์€ ๊ณ ๋“ฑํ•™๊ต๋•Œ ์ง€์‹๋งŒ์œผ๋กœ ์ถฉ๋ถ„ํ• ๊ฑธ?


๊ทธ๋Ÿฐ๋ฐ ์ด๋ฏธ ๋ฐฐ์› ์–ด๋„ ๊ทธ๋ƒฅ ์•”๊ธฐ๋งŒํ•˜๊ณ  ์ˆ˜ํ•™์— ๊ฑฐ๋ถ€๊ฐ ๊ฐ€์ง„ย ์‚ฌ๋žŒ๋“ค์€ ์ €๋Ÿฐ๊ฑฐ ์ƒ๊ฐ์ž˜ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๋‹ค ๋‹ค๋ฐ˜์‚ฌ์ž„.

"ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•˜๋Š”๊ฒƒ ๊นŒ์ง€ ์ˆ˜ํ•™์„ ์‘์šฉํ•ด์•ผํ•จ? ์•ˆํ•ด๋„ ์ถฉ๋ถ„ํžˆ ๋น ๋ฅธ๋ฐ..."

์ด๋Ÿฌ๊ณ  ๊ฑ ๋Œ€๊ฐ•๋Œ€๊ฐ• ์ฝ”๋”ฉํ•˜๋Š”๊ฑฐ์ง€.



์•ˆ์ •์„ฑ์ด ์ค‘์š”ํ•œ ํ”„๋กœ์ ํŠธ์—์„œ 2๋ฒˆ๊ฐ™์€ ์žฌ๊ท€๋ฌธ์œผ๋กœ ์“ฐ๋‹ค๋ณด๋ฉด ๋ˆˆ์œผ๋กœ ์ฝ”๋“œ๋ณด๊ธฐ๋Š” ์ข‹์€๋ฐ ๋ป‘๋‚˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๊ณ ย 

๋””๋ฒ„๊ทธ ํ•˜๋Š”๊ฒƒ๋„ ์ƒ๋Œ€์ ์œผ๋กœ ์–ด๋ ค์›€.


(๋‚œ ์˜ˆ์ „์— ์žฌ๊ท€ํ•จ์ˆ˜์ชฝ์—์„œ ์‹ค์ˆ˜ํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ 30000byte ์ •๋„๋ฅผ dangling pointer๋กœ ๋‚ ๋ ค ๋จน์—ˆ์Œ.)


๊ฒฐ๋ก ์€ ์ˆ˜ํ•™์ ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€์ค„์•Œ๋ฉด ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ• ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋„ ๋งŽ์Œ.


์–ด์ฐจํ”ผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์กฐ๊ฑด+๋ฐ˜๋ณต์ด ํ•ต์‹ฌ์ด๊ธฐ ๋•Œ๋ฌธ์ž„.