-
728x90๋ฐ์ํ
์์ฒญ ๋ ์ง : 11/13/2021
์์ฒญ ๊ฐ์ : ์๊ณ ๋ฆฌ์ฆ ํด๊ฒฐ์ ์ค์ํ ์ฌ๊ท ํธ์ถ ์ดํด์ข ๋ฆ์ ๊ฐ์ด ์์ง๋ง, ์ฌ๊ท ํธ์ถ ๊ฐ์๋ฅผ ๋ค์ด๋ณด์๋ค.
์ฌ๊ท
์ฌ๊ท ํจ์๋ ํน์ ํจ์ ๋ด์์ ์๊ธฐ ์์ ์ ๋ค์ ํธ์ถํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด๋๊ฐ๋ ํจ์์ด๋ค. ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์๋ ๋ฒ์์ ๋ฌธ์ ์์ ๋ ์์ ๋ฒ์์ ํ์ ๋ฌธ์ ๋ฅผ ๋จผ์ ํด๊ฒฐํ์ฌ ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด ๋๊ฐ๋ค.
Factorial ์์
๊ทธ ์ ๋ช ํ ํฉํ ๋ฆฌ์ผ ์์ ...
์คํ ์ค๋ฒํ๋ก์ฐ์์ ๊ทธ๋ฆผ๊ณผ ์ฝ๋๋ฅผ ๊ฐ์ ธ์๋ดค๋ค.
int factorial(int n) {if (n <= 1)return 1;elsereturn n * factorial(n - 1);}๊ฐ์์์๋ ์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ํ์๋๋ฐ, ์๋ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ์ฌ๊ท๊ฐ ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ง๋์ง ์ฝ๊ฒ ์ดํดํ ์ ์์ด์ ๊ฐ์ ธ์๋ณด์๋ค.
์ด๋ฏธ์ง ์ถ์ฒ : stack overflow ๊ฐ์์์๋ ์กฐ๊ฑด์ (n>1)๋ก ์ฃผ์์ง๋ง, ๋ํ์์ ๋ฐฐ์ธ ๋ Base Case๋ฅผ ์ฝ ์ก์์ ์ฝ๋ ์ฐ๋ ๊ฒ ๋ ํธํด์ก๊ธฐ๋๋ฌธ์ธ์ง ๋ชฐ๋ผ๋, n==1์ผ ๋๋ฅผ base case๋ก ์ก๋ ๊ฒ ๋ ๋ณด๊ธฐ๊ฐ ์ข์ ๊ฒ ๊ฐ๋ค.
public class Factorial{public int factorial(int n ){//Base caseif(n==1){return 1;}return n* factorial(n-1);}}์๊ฐ ๋ณต์ก๋
O(n-1) = O(n)
๊ณต๊ฐ ๋ณต์ก๋
O(n-1) = O(n)
์๊ฐ ๋ณต์ก๋์ ๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ๋ณด๋ฉด ์๊ฒ ์ง๋ง, n ์ด ์ปค์ง๋ฉด ์๊ฐ ์ด๊ณผ๋ ์คํ์ค๋ฒํ๋ก์ฐ๊ฐ ๋๊ธฐ ์ผ์์ด๋ค. ๋ฐ๋ผ์, ๋ณดํต n์ด ํฐ ๊ฒฝ์ฐ๋ ์ฌ๊ท๊ฐ ์๋๋ผ DP๋ก ํ ์ ์๋์ง ์์ฌํด ๋ด์ผ ํ๋ค. ๋ง์ฝ, ์ฌ๊ท๋ฅผ ํธ๋ ๊ณผ์ ์์ ์ค๋ณต๋๋ ๊ณผ์ ์ด ๋ง๋ค๋ฉด DP๋ก ํ๋ฒ ํ์ด๋ณด๋ ๊ฒ์ ์ถ์ฒํ๋ค.
Reference : https://stackoverflow.com/questions/8183426/factorial-using-recursion-in-java
ํจ์คํธ์บ ํผ์ค ํ๊ธ ์ฑ๋ฆฐ์ง ๋ฐ๋ก๊ฐ๊ธฐ๐ https://bit.ly/3FVdhDa
์๊ฐ๋ฃ 100% ํ๊ธ ์ฑ๋ฆฐ์ง | ํจ์คํธ์บ ํผ์ค
๋ฑ 5์ผ๊ฐ ์งํ๋๋ ํ๊ธ์ฑ๋ฆฐ์ง๋ก ์๊ฐ๋ฃ 100% ํ๊ธ๋ฐ์ผ์ธ์! ๋ ๋ฆ๊ธฐ์ ์ ์๊ธฐ๊ณ๋ฐ ๋ง์ฐจ ํ์น!
fastcampus.co.kr
๋ณธ ํฌ์คํ ์ ํจ์คํธ์บ ํผ์ค ํ๊ธ ์ฑ๋ฆฐ์ง ์ฐธ์ฌ๋ฅผ ์ํด ์์ฑ๋์์ต๋๋ค.
728x90๋ฐ์ํ'๐ STUDY > FASTCAMPUS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํจ์คํธ์บ ํผ์ค ์ฑ๋ฆฐ์ง 15์ผ์ฐจ (0) 2021.11.15 ํจ์คํธ์บ ํผ์ค ์ฑ๋ฆฐ์ง 14์ผ์ฐจ (0) 2021.11.14 ํจ์คํธ์บ ํผ์ค ์ฑ๋ฆฐ์ง 12์ผ์ฐจ (0) 2021.11.12 ํจ์คํธ์บ ํผ์ค ์ฑ๋ฆฐ์ง 11์ผ์ฐจ (0) 2021.11.11 ํจ์คํธ์บ ํผ์ค ์ฑ๋ฆฐ์ง 10์ผ์ฐจ (0) 2021.11.10 ๋๊ธ