์ผ์ •ํ•œ ๋ฒ”์œ„(1์”ฉ ์ž‘์•„์ง€๋Š” ๊ทœ์น™)๋กœ ๋‚˜์—ด๋œ ์ˆ˜์˜ ๋ฐฐ์—ด์— ๊ฐ™์€ ํ–‰๋™(๊ณฑํ•˜๊ธฐ)์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ๋‹ค.

1. ๋ฐ˜๋ณต๋ฌธ

๋ฐ˜๋ณต์„ ํ•  ๋•Œ๋Š” ํŠนํžˆ ํ•˜๋‚˜์”ฉ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฐ™์€ ํ–‰๋™์„ ํ•  ๋•Œ for๋ฌธ์„ ์‚ฌ์šฉํ•œ๋‹ค!

for๋ฌธ์„ ํ†ตํ•ด result ๊ฐ’์„ result * i๋กœ ํ‘œํ˜„ํ•จ์œผ๋กœ์จ ๊ณฑํ•˜๊ธฐ๋ฅผ ๋ˆ„์ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

2. ์žฌ๊ท€ํ•จ์ˆ˜ - ์Šค์Šค๋กœ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹

if๋ฌธ์œผ๋กœ ์ข…๋ฃŒ ์กฐ๊ฑด์„ ๊ฑธ์–ด๋‘” ํ›„, ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ๋™์ผํ•œ ํ•จ์ˆ˜(์ž๊ธฐ ์ž์‹ )๋ฅผ ๋‹ค์‹œ ํ˜ธ์ถœํ•ด์„œ ์ผ์„ ์‹œํ‚จ๋‹ค.

์ฆ‰, ํฐ ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„๋Š” ๋ฐฉ์‹์ด๋‹ค.


์•—! ํŒฉํ† ๋ฆฌ์–ผ์„ ์ค‘ํ•™์ƒ ๋•Œ ์ดํ›„๋กœ ์ฒ˜์Œ ์ ‘ํ•˜๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ!

 

1. ํŒฉํ† ๋ฆฌ์–ผ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

ํŒฉํ† ๋ฆฌ์–ผ์€ ์–ด๋–ค ์ˆซ์ž์—์„œ 1๊นŒ์ง€์˜ ๋ชจ๋“  ์ˆซ์ž๋ฅผ ๊ณฑํ•œ ๊ฐ’์„ ๋œปํ•œ๋‹ค.

์‰ฝ๊ฒŒ ๋งํ•ด, “์ˆซ์ž๋“ค์ด ์ค„์ง€์–ด ์„œ์„œ ๋ชจ๋‘ ์ฐจ๋ก€๋กœ ๊ณฑํ•œ๋‹ค!” ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด, 4์˜ ํŒฉํ† ๋ฆฌ์–ผ์€ ์ด๋ ‡๊ฒŒ ๊ณ„์‚ฐํ•œ๋‹ค:

4! = 4 * 3 * 2 *1 = 24

 

2. ํŒฉํ† ๋ฆฌ์–ผ์˜ ๊ทœ์น™

   • 1์˜ ํŒฉํ† ๋ฆฌ์–ผ์€ ํ•ญ์ƒ 1. (1! = 1)

   • 0์˜ ํŒฉํ† ๋ฆฌ์–ผ๋„ 1. (0! = 1)

  ์ด๊ฑด ์•ฝ์†๋œ ๊ทœ์น™์ด๋‹ค.

 

3. ๊ทธ๋Ÿผ ํŒฉํ† ๋ฆฌ์–ผ ๊ณ„์‚ฐ์„ ์–ด๋–ป๊ฒŒ ์ฝ”๋“œ๋กœ ์งค๊นŒ?

  3.1 ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๊ณ„์‚ฐํ•˜๊ธฐ

public class Factorial {
   public static void main(String[] args) {
      int number = 5 // ํŒฉํ† ๋ฆฌ์–ผ์„ ๊ณ„์‚ฐํ•  ์ˆซ์ž
      int result = 1; // ๊ฒฐ๊ณผ๊ฐ’ ์ดˆ๊ธฐํ™” 
      
      // 1๋ถ€ํ„ฐ number๊นŒ์ง€ ์ฐจ๋ก€๋กœ ๊ณฑํ•˜๊ธฐ
      for (int i = 1; i <= number; i++) {
          result = result * i; // result์— ๊ณ„์† i๋ฅผ ๊ณฑํ•˜๊ธฐ
      }
      
      System.out.println(number + "! = " + result);
   }
}

1) result๋Š” ์ฒ˜์Œ์— 1.

2) i๊ฐ€ 1๋ถ€ํ„ฐ 5๊นŒ์ง€ ๋ฐ˜๋ณต๋œ๋‹ค.

  • ์ฒซ ๋ฒˆ์งธ ๋ฐ˜๋ณต:  result = 1 * 1 

  • ๋‘ ๋ฒˆ์งธ ๋ฐ˜๋ณต:  result = 1 * 2 

  • ์„ธ ๋ฒˆ์งธ ๋ฐ˜๋ณต:  result = 2 * 3 

  • ๋„ค ๋ฒˆ์งธ ๋ฐ˜๋ณต:  result = 6 * 4 

  • ๋‹ค์„ฏ ๋ฒˆ์งธ ๋ฐ˜๋ณต:  result = 24 * 5 = 120 

3. ๋งˆ์ง€๋ง‰์— ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•ด์š”: “5! = 120”


  3.2 ์žฌ๊ท€ํ•จ์ˆ˜๋กœ ๊ณ„์‚ฐํ•˜๊ธฐ - ์Šค์Šค๋กœ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹. 

public class Factorial {
 // ํŒฉํ† ๋ฆฌ์–ผ์„ ๊ณ„์‚ฐํ•˜๋Š” ์žฌ๊ท€ ํ•จ์ˆ˜
   public static int factorial(int n) {
       if (n == 0 | n == 1) { // ์ข…๋ฃŒ ์กฐ๊ฑด: 0!๊ณผ 1!์€ 1
         return 1;
       }
       return n * factorial(n - 1); // ์ž๊ธฐ ์ž์‹ ์„ ํ˜ธ์ถœ
   }
   
   public static void mai(String[] args) {
      int number = 5;
      System.out.println(number + "! = " + factorial(number));
   }
}

์žฌ๊ท€๋Š” ํ•จ์ˆ˜๊ฐ€ "์Šค์Šค๋กœ๋ฅผ ํ˜ธ์ถœ"ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ํŒฉํ† ๋ฆฌ์–ผ์€ ์žฌ๊ท€๋กœ ํ’€๊ธฐ ์•„์ฃผ ์ข‹๋‹ค.

 

์žฌ๊ท€์˜ ์›๋ฆฌ :

ํŒฉํ† ๋ฆฌ์–ผ  n! = n \times (n-1)! 

๋‹ค์‹œ ๋งํ•ด, ํฐ ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด:  5! = 5* 4! ,  4! = 4 *3! , …

๊ณ„์† ๋‚˜๋ˆ„๋‹ค๊ฐ€  1! = 1 ์—์„œ ๋ฉˆ์ถ˜๋‹ค.

 

์žฌ๊ท€๋Š” ์ข…๋ฃŒ์กฐ๊ฑด์„ ๋„ฃ๋Š”๊ฒŒ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค.
์ž๊ธฐ ์ž์‹ ์„ ํ˜ธ์ถœํ•˜๋Š” ์ฝ”๋“œ ์•ž์— ์ข…๋ฃŒ ์กฐ๊ฑด์„ ๋„ฃ์–ด์„œ ๋ฌดํ•œ๋ฃจํ”„ ๋„๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ด์•ผ ํ•œ๋‹ค. 

 

์žฌ๊ท€ ํ•จ์ˆ˜์˜ ๋™์ž‘ ๊ณผ์ •

 5! ์„ ๊ณ„์‚ฐํ•œ๋‹ค๊ณ  ํ•˜๋ฉด:

1.  factorial(5)  ํ˜ธ์ถœ →  5 * factorial(4) 

2.  factorial(4)  ํ˜ธ์ถœ →  4 * factorial(3) 

3.  factorial(3)  ํ˜ธ์ถœ →  3 * factorial(2) 

4.  factorial(2)  ํ˜ธ์ถœ →  2 * factorial(1) 

5.  factorial(1) ์€ ์ข…๋ฃŒ ์กฐ๊ฑด์ด๋‹ˆ๊นŒ 1์„ ๋ฐ˜ํ™˜.

6. ์ด์ œ ๊ณ„์‚ฐ์ด ์—ญ์ˆœ์œผ๋กœ ๋Œ์•„๊ฐ„๋‹ค: - ์Šคํƒ์˜ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ์ธํ•˜์—ฌ.

 2 * 1 = 2 

 3 * 2 = 6 

 4 * 6 = 24 

 5 * 24 = 120 

+ Recent posts