๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ’ป Computer Science/- Data Structure, Algorithm

[์•Œ๊ณ ๋ฆฌ์ฆ˜-PS] Java ์—์„œ ์žฌ๊ท€ ํ˜ธ์ถœ๋กœ ํŒฉํ† ๋ฆฌ์–ผ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•

by Wonit 2020. 2. 21.

์žฌ๊ท€

 

์žฌ๊ท€์˜ ๋œป

์žฌ๊ท€๋ž€ ๋ณธ๋ž˜์˜ ๊ฒƒ์œผ๋กœ ๋‹ค์‹œ ๋Œ์•„๊ฐ€๋Š” ๊ฒƒ์„ ๋ง ํ•œ๋‹ค๊ณ  ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰์—์„œ ๋ฐœ์ทŒํ•ด ์™”๋‹ค.


์ด ๋ง์€ ์–ด๋–ค ์‚ฌ๊ฑด์ด ์ž๊ธฐ ์ž์‹ ์„ ํฌํ•จํ•˜๊ณ  ๋‹ค์‹œ ์ž๊ธฐ ์ž์‹ ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •์˜๋  ๋•Œ ์ด๋ฅผ ์žฌ๊ท€์ (Recursive) ์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

๋ณธ๋ž˜์˜ ๊ฒƒ์œผ๋กœ ๋‹ค์‹œ ๋Œ์•„๊ฐ„๋‹ค๋Š” ๊ฒƒ์„ ์ข€๋” ์ง๊ด€์ ์œผ๋กœ ๋ณด์—ฌ์ฃผ์ž๋ฉด

 

ํ™”๋ฉด์•ˆ์— ๋˜ ํ™”๋ฉด์•ˆ์„ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์†ก์‚ฌ๊ณ 

์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์ด ๋ฐ”๋กœ ์žฌ๊ท€์ด๋‹ค.

์žฌ๊ท€ ํ˜ธ์ถœ

ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋„ ์ด๋Ÿฐ ์žฌ๊ท€์  ํšจ๊ณผ๋ฅผ ์ด์šฉํ•˜๋ฉด ์ข€ ๋” ๊ฐ„๊ฒฐํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ตฌ์‚ฌํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์žฌ๊ท€ ํ˜ธ์ถœ์„ ๊ฐ€์žฅ ์ž˜ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ํŒฉํ† ๋ฆฌ์–ผ ์ด๋‹ค.

 

ํŒฉํ† ๋ฆฌ์–ผ

 

ํŒฉํ† ๋ฆฌ์–ผ์€ 1๋ถ€ํ„ฐ N ๊นŒ์ง€์˜ ๋ชจ๋“  ์ˆ˜๋ฅผ ๊ณฑํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋Š๋‚Œํ‘œ๋กœ ํŒฉํ† ๋ฆฌ์–ผ์„ ์ •์˜ํ•œ๋‹ค.

 

 

์ด ๊ณผ์ •์„ ์ฝ”๋“œ๋กœ ๋งŒ๋“ค์–ด ๋ณด์ž๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค

 

์žฌ๊ท€ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ํŒฉํ† ๋ฆฌ์–ผ ํ•จ์ˆ˜

 

class Main {

    int factorialNonR(int num){
        int ans = 1;
        for (int i = 1; i <= num; i++) {
            ans = ans * i;
        }

        return ans;
    }
}

 

์œ„์™€ ๊ฐ™์ด ์žฌ๊ท€ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด for๋ฌธ์„ ์ด์šฉํ•˜์—ฌ i ๋ถ€ํ„ฐ 1 ๊นŒ์ง€์˜ ๋ชจ๋“  ๊ณฑ์„ ans ๋ผ๋Š” ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๊ณ  return ํ•˜๊ฒŒ ๋œ๋‹ค.

 

ํ•˜์ง€๋งŒ ์žฌ๊ท€๋ฅผ ์‚ฌ์šฉํ•˜๋‹จ๋‹ค๋ฉด ๋”์šฑ ๊ฐ„๊ฒฐํ•˜๊ณ  ์ง๊ด€์ ์ธ ์ฝ”๋“œ๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค.

 

์žฌ๊ท€ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•œ ํŒฉํ† ๋ฆฌ์–ผ ํ•จ์ˆ˜

class Main{

    int factorial(int num){
        if(num > 0) return num * factorial(num-1);
        else return 1;
    }

 }

 

if์ ˆ์—์„œ ๋ณด๋ฉด return ์„ ํ•˜๋Š”๋ฐ ํ˜„์žฌ์˜ num๊ณผ factorial(num-1)์˜ ํ˜ธ์ถœ ๊ฒฐ๊ณผ๋ฅผ ๊ณฑํ•˜๋Š”๋ฐ, ๋˜ factorial(num-1) ์€ factorial(num-1) * factorial(num-2)๋กœ ๋‚˜๋ˆ ์งˆ ์ˆ˜ ์žˆ๋‹ค.

 

์ ์  ์ˆ˜ํ–‰ํ•˜๋‹ค๊ฐ€ n์ด 0์ด ๋˜๋Š” ์ˆœ๊ฐ„ 1์„ ๋ฆฌํ„ดํ•ด์„œ ๋‹ค์‹œ ์ƒํ–ฅ์‹์œผ๋กœ ์˜ฌ๋ผ๊ฐ„๋‹ค.

๋Œ“๊ธ€