Super Kawaii Cute Cat Kaoani
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Algorithm/Python

[Python] ์žฌ๊ท€ํ•จ์ˆ˜

728x90

๐Ÿ’ก ์žฌ๊ท€ํ•จ์ˆ˜๋ž€? ์ž๊ธฐ ์ž์‹ ์„ ๋‹ค์‹œ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜

def recursive_function():
    print('์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.')
    recursive_function()
recursive_function()

 

'์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค' ๋ผ๋Š” ๋ฌธ์ž์—ด์„ ๋ฌดํ•œํžˆ ํ˜ธ์ถœํ•œ๋‹ค.

 

โœ”๏ธ ์žฌ๊ท€ํ•จ์ˆ˜์˜ ์ข…๋ฃŒ ์กฐ๊ฑด

์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ๋ฌธ์ œ ํ’€์ด์—์„œ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์žฌ๊ท€ ํ•จ์ˆ˜๊ฐ€ ์–ธ์ œ ๋๋‚  ์ง€, ์ข…๋ฃŒ ์กฐ๊ฑด์„ ๊ผญ ๋ช…์‹œํ•ด์•ผ ํ•œ๋‹ค.

 

def recursive_function(i):
    if i == 100 : return
    print(i, '๋ฒˆ์งธ ์žฌ๊ท€ ํ•จ์ˆ˜์—์„œ', i + 1, '๋ฒˆ์งธ ์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.')
    recursive_function(i + 1)
    print(i, '๋ฒˆ์งธ ์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.')
    
recursive_function(1)

 

 

์ปดํ“จํ„ฐ ๋‚ด๋ถ€์—์„œ ์žฌ๊ท€ํ•จ์ˆ˜์˜ ์ˆ˜ํ–‰์€ ์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•œ๋‹ค.

ํ•จ์ˆ˜๋ฅผ ๊ณ„์† ํ˜ธ์ถœํ–ˆ์„ ๋•Œ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ํ˜ธ์ถœํ•œ ํ•จ์ˆ˜๊ฐ€ ๋จผ์ € ์ˆ˜ํ–‰์„ ๋๋‚ด์•ผ ๊ทธ ์•ž์˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ์ข…๋ฃŒ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ ํŒฉํ† ๋ฆฌ์–ผ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.

 

โœ”๏ธ ๋ฐ˜๋ณต์ ์œผ๋กœ ๊ตฌํ˜„

def factorial_iterative(n):
    result = 1
    for i in range(1, n + 1):
        result *= i
    return result

factorial_iterative(5)	# 120

 

โœ”๏ธ ์žฌ๊ท€์ ์œผ๋กœ ๊ตฌํ˜„

def factorial_recursive(n):
    if n <= 1:
        return 1
    return n * factorial_recursive(n-1)

factorial_recursive(5)	# 120

์žฌ๊ท€ ํ•จ์ˆ˜๋Š” ์ˆ˜ํ•™์˜ ์ ํ™”์‹์„ ๊ทธ๋Œ€๋กœ ์†Œ์Šค์ฝ”๋“œ๋กœ ์˜ฎ๊ฒจ ๋” ๊ฐ„๊ฒฐํ•˜๋‹ค.

์ ํ™”์‹์€ ํŠน์ •ํ•œ ํ•จ์ˆ˜๋ฅผ ์ž์‹ ๋ณด๋‹ค ๋” ์ž‘์€ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ํ•จ์ˆ˜์™€์˜ ๊ด€๊ณ„๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ์ด๋‹ค.

 

์ˆ˜ํ•™์˜ ์ ํ™”์‹

1) n์ด 0 ํ˜น์€ 1 ์ผ ๋•Œ : factorial(n) = 1
2) n์ด 1๋ณด๋‹ค ํด ๋•Œ : factorial(n) = n * factorial(n-1)

'n์ด 0 ํ˜น์€ 1 ์ผ ๋•Œ'์™€ ๊ฐ™์ด ์ข…๋ฃŒ ์กฐ๊ฑด์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

์žฌ๊ท€ ํ•จ์ˆ˜ ๋‚ด์—์„œ ํŠน์ • ์กฐ๊ฑด์ผ ๋•Œ ๋” ์ด์ƒ ์žฌ๊ท€์ ์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š๊ณ  ์ข…๋ฃŒ๋˜๋„๋ก if๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ๊ผญ ์ข…๋ฃŒ ์กฐ๊ฑด์„ ๊ตฌํ˜„ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

 

728x90