자료구조와 알고리즘 실습 | Data Structures & Algorithms Lab
무한 재귀 호출의 개념을 확인합니다
def openBox() :
openBox() # 처음 함수를 다시 호출
Demonstrates the concept of infinite recursion
def openBox() :
openBox() # First function call again
재귀 호출의 종료 조건(기저 조건)을 설정합니다
def openBox() :
count = 10 openBox() # 처음 함수를 다시 호출
Sets a base case to terminate recursion
def openBox() :
count = 10 openBox() # First function call again
재귀로 1부터 n까지의 합을 구합니다
def addNumber(num) :
print(addNumber(10))
Calculates the sum from 1 to n using recursion
def addNumber(num) :
print(addNumber(10))
재귀로 팩토리얼을 계산합니다
def factorial(num) :
print('\n5! = ', factorial(5))
Calculates factorial using recursion
def factorial(num) :
print('\n5! = ', factorial(5))
재귀로 카운트다운을 구현합니다
def countDown(n) :
countDown(5)
Implements a countdown using recursion
def countDown(n) :
countDown(5)
재귀로 별 모양 패턴을 출력합니다
def printStar(n) :
printStar(5)
Prints a star pattern using recursion
def printStar(n) :
printStar(5)
재귀로 구구단을 출력합니다
def gugu(dan, num) :
for dan in range(2,10) :
print("## %d단 ##" % dan)
gugu(dan, 1)
Prints a multiplication table using recursion
def gugu(dan, num) :
for dan in range(2,10) :
print("## %d-dan ##" % dan)
gugu(dan, 1)
재귀로 거듭제곱을 계산합니다
tab = '' def pow(x, n) :
print('2^4')
print('답 -->', pow(2, 4))
Calculates power (exponentiation) using recursion
tab = '' def pow(x, n) :
print('2^4')
print('answer -->', pow(2, 4))
재귀로 배열의 합계를 구합니다
import random def arySum(arr, n) :
ary = [random.randint(0, 255) for _ in range(random.randint(10, 20))]
print(ary)
print('배열 합계 -->', arySum(ary, len(ary)-1))
Calculates array sum using recursion
import random def arySum(arr, n) :
ary = [random.randint(0, 255) for _ in range(random.randint(10, 20))]
print(ary)
print('Array sum -->', arySum(ary, len(ary)-1))
재귀로 피보나치 수열을 구현합니다
def fibo(n) :
print('피보나치 수 --> 0 1 ', end='')
for i in range(2, 20) :
print(fibo(i), end=' ')
Implements the Fibonacci sequence using recursion
def fibo(n) :
print('Fibonacci number --> 0 1 ', end='')
for i in range(2, 20) :
print(fibo(i), end=' ')
재귀로 회문(palindrome) 검사를 구현합니다
## 함수 선언 부분 ## def palindrome(pStr) :
## 전역 변수 선언 부분 ## strAry = ["reaver", "kayak", "Borrow or rob", "주유소의 소유주", "야 너 이번주 주번이 너야", "살금 살금"] ## 메인 코드 부분 ##
Implements palindrome checking using recursion
## Function Declarations ## def palindrome(pStr) :
## Global Variables ##
strAry = ["reaver", "kayak", "Borrow or rob", "Gas station owner", "Hey, you're on duty this week", "tiptoeing"]
## Main Code ##
for testStr in strAry :
print(testStr, end = '--> ' )
testStr = testStr.lower().replace(' ','')
if palindrome(testStr) :
print('O')
else :
print('X')
재귀로 프랙탈 트리를 그립니다 (tkinter)
from tkinter import * window = Tk() canvas = Canvas(window, height=1000, width=1000, bg='white') canvas.pack() cx=1000//2 cy=1000//2 r = 400 canvas.create_oval(cx-r, cy-r, cx+r, cy+r, width=2, outline="red") window.mainloop()
Draws a fractal tree using recursion (tkinter)
from tkinter import * window = Tk() canvas = Canvas(window, height=1000, width=1000, bg='white') canvas.pack() cx=1000//2 cy=1000//2 r = 400 canvas.create_oval(cx-r, cy-r, cx+r, cy+r, width=2, outline="red") window.mainloop()
재귀로 원형 프랙탈을 그립니다 (tkinter)
from tkinter import * ## 함수 선언 부분 ## def drawCircle(x, y, r) :
## 전역 변수 선언 부분 ## count = 0 wSize = 1000 radius = 400 ## 메인 코드 부분 ##
Draws circular fractals using recursion (tkinter)
from tkinter import * ## Function Declarations ## def drawCircle(x, y, r) :
## Global Variables ## count = 0 wSize = 1000 radius = 400 ## Main Code ## window = Tk() canvas = Canvas(window, height=wSize, width=wSize, bg='white') drawCircle(wSize//2, wSize//2, radius) canvas.pack() window.mainloop()
재귀로 랜덤 프랙탈 아트를 그립니다 (tkinter)
from tkinter import * import random ## 함수 선언 부분 ## def drawCircle(x, y, r) :
## 전역 변수 선언 부분 ## colors = ["red", "green", "blue", "black", "orange", "indigo", "violet"] wSize = 1000 radius = 400 ## 메인 코드 부분 ##
Draws random fractal art using recursion (tkinter)
from tkinter import * import random ## Function Declarations ## def drawCircle(x, y, r) :
## Global Variables ##
colors = ["red", "green", "blue", "black", "orange", "indigo", "violet"]
wSize = 1000
radius = 400
## Main Code ##
window = Tk()
window.title("Circle-shaped fractal")
canvas = Canvas(window, height=wSize, width=wSize, bg='white')
drawCircle(wSize//2, wSize//2, radius)
canvas.pack()
window.mainloop()
재귀 응용: n진법 변환기를 구현합니다
## 함수 선언 부분 ## def notation(base, n):
## 전역 변수 선언 부분 ## numberChar = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] numberChar += ['A', 'B', 'C', 'D', 'E', 'F'] ## 메인 코드 부분 ##
Recursion application: implements a base-n converter
## Function Declarations ## def notation(base, n):
## Global Variables ##
numberChar = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
numberChar += ['A', 'B', 'C', 'D', 'E', 'F']
## Main Code ##
number = int(input('Enter decimal -->'))
print('\n Binary: ', end = ' ')
notation(2, number)
print('\n Octal: ', end = ' ')
notation(8, number)
print('\nHexadecimal: ', end = ' ')
notation(16, number)
재귀 응용: 시에르핀스키 삼각형을 그립니다
from tkinter import * ## 함수 선언 부분 ## def drawTriangle(x, y, size) :
## 전역 변수 선언 부분 ## wSize = 1000 radius = 400 ## 메인 코드 부분 ##
Recursion application: draws a Sierpinski triangle
from tkinter import * ## Function Declarations ## def drawTriangle(x, y, size) :
## Global Variables ##
wSize = 1000
radius = 400
## Main Code ##
window = Tk()
window.title("Triangle-shaped fractal")
canvas = Canvas(window, height = wSize, width = wSize, bg = 'white')
drawTriangle(wSize/5, wSize/5*4, wSize*2/3)
canvas.pack()
window.mainloop()
재귀로 범위 합계를 직접 구현합니다
def addNumber(num1, num2) :
num1 = int(input('숫자1-->'))
num2 = int(input('숫자2-->'))
if num1 > num2 :
num1, num2 = num2, num1
print(addNumber(num1, num2))Implements range sum using recursion yourself
def addNumber(num1, num2) :
num1 = int(input('Number1-->'))
num2 = int(input('Number2-->'))
if num1 > num2 :
num1, num2 = num2, num1
print(addNumber(num1, num2))재귀로 구구단 가로 출력을 직접 구현합니다
def gugu(dan, num) :
for num in range(1,10) :
gugu(2, num)
print()
Implements horizontal multiplication table using recursion yourself
def gugu(dan, num) :
for num in range(1,10) :
gugu(2, num)
print()