[ Code Kata ] ๐Ÿคฏ python #15 ์žฌ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜

Haileeยท2020๋…„ 12์›” 20์ผ
0

[ Code Kata ]

๋ชฉ๋ก ๋ณด๊ธฐ
21/28
post-thumbnail

์˜ค๋Š˜์€ ์™ ์ผ๋กœ ์ƒˆ๋กœ์šด ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…์— ๋Œ€ํ•ด ๋ฐฐ์›Œ๋ณด๋Š” ๋‚ ์ด์—ˆ๋‹ค!

์žฌ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜?

์žฌ๊ท€(recursion)๋ž€, ์ž์‹ ์„ ์ •์˜ํ•  ๋•Œ ์ž๊ธฐ ์ž์‹ ์„ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋œปํ•˜๋ฉฐ, ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•จ์ˆ˜์ •์˜์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.

def countdown(n):
  print(n)
  countdown(n-1)
 
countdown(10);
def countdown(n):
  print(n)
  countdown(n-1)

countdown(10);

์˜ˆ๋ฅผ๋“ค๋ฉด, countdown ํ•จ์ˆ˜๋Š” ๋ฐ›์€ ์ธ์ž๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ์œ„์˜ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋ฉด 10์—์„œ ์‹œ์ž‘ํ•ด์„œ ๋ฌดํ•œ์œผ๋กœ ๋งˆ์ด๋„ˆ์Šค ๊ฐ’๊นŒ์ง€ ๋‚ด๋ ค๊ฐ„๋‹ค. (๋ง๋„ ์•ˆ๋˜์Ÿˆ๋‚˜)

์ด๋ ‡๊ฒŒ ๋•… ๋๊นŒ์ง€ ํŒŒ๊ณ ๋“œ๋Š” ์ƒํ™ฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด, ์žฌ๊ท€ํ•จ์ˆ˜๋Š” ์•„๋ž˜์˜ ์ ˆ์ฐจ๊ฐ€ ๊ผญ ํ•„์š”ํ•˜๋‹ค.

์–ธ์ œ ๋ฉˆ์ถœ๊ฒƒ์ธ๊ฐ€?

์ด๋ฅผ ๊ณ ๋ คํ•ด 0์ด ๋˜๋ฉด ๋”์ด์ƒ ์žฌ๊ท€๋ฅผ ์ด์–ด๋‚˜๊ฐ€์ง€ ์•Š๋„๋ก ์ข…๋ฃŒ ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•ด๋ณด์ž.

def countdown(n):
  print(n)
  
  if (n == 0):
    return None
  
  countdown(n-1)

countdown(10);

๋ฌธ์ œ

์žฌ๊ท€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒฉํ† ๋ฆฌ์–ผ(factorial)์„ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ด์ฃผ์„ธ์š”.
: ํŒฉํ† ๋ฆฌ์–ผ์ด๋ž€ 1์—์„œ๋ถ€ํ„ฐ n๊นŒ์ง€์˜ ์ •์ˆ˜๋ฅผ ๋ชจ๋‘ ๊ณฑํ•œ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

1! = 1
2! = 1 2
5! = 1 2 3 4 * 5

model solution

def factorial(n):
  if (n == 0):
    return 1
    
  return n * factorial(n-1)

1~n๊นŒ์ง€์˜ ๋ชจ๋“  ์ •์ˆ˜๋ฅผ ๊ณฑํ•œ ๊ฒƒ์„ ๋ฆฌํ„ด๋ณด๋‚ด๊ธฐ ๋•Œ๋ฌธ์—,
0์ผ ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ์ข…๋ฃŒ ์กฐ๊ฑด๋งŒ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

์•„์ง ์žฌ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ๋ถ€์กฑํ•œ ์ƒํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋” ์ž˜ ๊ณต๋ถ€ํ•ด๋ณด์•„์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.. ใ… ใ… 

profile
์›น ๊ฐœ๋ฐœ ๐Ÿท๐Ÿ˜Ž๐Ÿ‘Š๐Ÿป๐Ÿ”ฅ

0๊ฐœ์˜ ๋Œ“๊ธ€