ํผ๋ณด๋์น ์์ด์ ํ์ฌ์ ์๊ฐ ์ด์ ๋ ์์ ํฉ์ผ๋ก ์ด๋ฃจ์ด์ง ์์ด์ด๋ค. ์ด ์์ด์์ n๋ฒ์งธ ์๋ฅผ ์ฐพ๊ธฐ ์ํด, n-1๋ฒ์งธ์ n-2๋ฒ์งธ ์๋ฅผ ์ฌ๊ท์ ์ผ๋ก ๊ณ์ฐํ์ฌ ํฉ์ฐํ๋ค.
function FIBONACCI(n):
if n์ด 0์ด๊ฑฐ๋ 1์ด๋ฉด:
return n
else:
return FIBONACCI(n-1) + FIBONACCI(n-2)
ํ๋ ธ์ด์ ํ์ n๊ฐ์ ๋์คํฌ๋ฅผ ํ ๊ธฐ๋ฅ์์ ๋ค๋ฅธ ๊ธฐ๋ฅ์ผ๋ก ์ฎ๊ธฐ๋ ๋ฌธ์ ์ด๋ค. ์ฌ๊ท์ ์ผ๋ก, n-1๊ฐ์ ๋์คํฌ๋ฅผ ๋ณด์กฐ๊ธฐ๋ฅ์ผ๋ก ์ด๋์ํค๊ณ , ๊ฐ์ฅ ํฐ ๋์คํฌ๋ฅผ ๋ชฉํ ๊ธฐ๋ฅ์ผ๋ก ์ฎ๊ธด ํ, ๋ณด์กฐ ๊ธฐ๋ฅ์ ์๋ n-1๊ฐ์ ๋์คํฌ๋ฅผ ๋ค์ ๋ชฉํ ๊ธฐ๋ฅ์ผ๋ก ์ฎ๊น๋๋ค.
fuction HANOI(n, ์์๊ธฐ๋ฅ, ๋ชฉํ๊ธฐ๋ฅ, ๋ณด์กฐ๊ธฐ๋ฅ):
if n์ด 1์ด๋ฉด:
output "๋์คํฌ 1์ ์์๊ธฐ๋ฅ์์ ๋ชฉํ๊ธฐ๋ฅ์ผ๋ก ์ด๋"
return
HANOI(n-1, ์์๊ธฐ๋ฅ, ๋ณด์กฐ๊ธฐ๋ฅ, ๋ชฉํ๊ธฐ๋ฅ)
output "๋์คํฌ n์ ์์๊ธฐ๋ฅ์์ ๋ชฉํ๊ธฐ๋ฅ์ผ๋ก ์ด๋"
HANOI(n-1, ๋ณด์กฐ๊ธฐ๋ฅ, ๋ชฉํ๊ธฐ๋ฅ, ์์๊ธฐ๋ฅ)
์ต์๊ณต๋ฐฐ์๋ฅผ ๊ตฌํ๊ธฐ ์ํด ๋จผ์ ๋ ์์ ์ต๋๊ณต์ฝ์(GCD)๋ฅผ ์ฌ๊ท์ ์ผ๋ก ์ฐพ๋๋ค. ์ต๋๊ณต์ฝ์๋ ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ ์ฌ์ฉํด ๊ณ์ฐํ ์ ์๋ค. ์ต์ ๊ณต๋ฐฐ์๋ ๋ ์์ ๊ณฑ์ ์ต๋๊ณต์ฝ์๋ก ๋๋ ๊ฐ์ผ๋ก ๊ตฌํ ์ ์์ต๋๋ค.
function GCD(a,b):
if b๊ฐ 0์ด๋ผ๋ฉด:
return a
else:
return GCD(b, a % b)
function LCM(a, b):
return (a * b) / GCD(a, b)