Recursive
์ฌ๊ท๋ ์ค์ค๋ก ํธ์ถํ๋ค ์กฐ๊ฑด์ ๋ง๋ ์ข ๋ฃ๋ฅผํ๋ ํจ์๋ฅผ ์๋ฏธํฉ๋๋ค.
์ฌ๊ท vs ๊ผฌ๋ฆฌ์ฌ๊ท
return์ ์ฐ์ฐ์ด ์์ผ๋ฉด ์ผ๋ฐ์ ์ธ ์ฌ๊ท๋ฌธ์ ๋๋ค.
fun sum(n:Int):Int=
if (n==1) 1
else n+ sum(n-1)
return์ ์ฐ์ฐ์ด ์์ผ๋ฉด ๊ผฌ๋ฆฌ์ฌ๊ท์ ๋๋ค
fun sum(n:Int, sum:Int = n):Int=
if (n==1) sum
else sum(n-1, sum+n-1)
์ฌ๊ทํจ์๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฃจํ๋ฌธ๊ณผ ๋ค๋ฅด๊ฒ ๊ณ์ ์คํ์ด ์์ด๋๊ฒ์ ๋ณผ ์ ์๋ค.
Tailrec
์ฝํ๋ฆฐ์์๋ tailrec์ผ๋ก ์์๊ฐ์ ๊ผฌ๋ฆฌ์ฌ๊ท๋ฌธ์ ์ฝ๊ฒ Loop๋ฅผ ์ด์ฉํ ์ฝ๋๋ก ์์ฑํ ์ ์์ต๋๋ค.
tailrec fun rec(level:Long): Long {
return if (level == 1L) 1
else rec(level - 1)
}
fun recwhile(level:Long): Long {
var level = level
while (level != 1L) {
level--
}
return 1
}
์ ๋ฐฉ์์ฒ๋ผ ๊ผฌ๋ฆฌ์ฌ๊ท๋ฅผ ์์ ๊ณ , ๋ฃจํ๋ฅผ ์ด์ฉํ ์ฝ๋๋ก ๋ณํ๋ฉ๋๋ค
Last updated