본문 바로가기

알고리즘

순환의 개념과 기본 예제 2

문자열의 길이 계산

string = 'hello'
def length(string):
if string == '': return 0
else : return 1+length(string[1:])

print(length(string))

문자열의 프린트

str='hello'
def printstr(str):
if len(str) == 0: return
print(str[0], end='')
printstr(str[1:])

print(printstr(str))

문자열을 뒤집어 프린트

str='hello'
def printstr(str):
if len(str) == 0: return
print(str[-1], end='')
printstr(str[:-1])

print(printstr(str))

2진수로 변환하여 출력

def printBinary(n):
if n<2: print(n,end='')
else:
printBinary(n//2)
print(n%2,end='') #바닥부터 출력하므로 n%2는 함수 호출보다 밑에 있음
print(printBinary(16))

배열의 합 구하기

nums = [i for i in range(1,101)]
def sum(n,nums):
if n<=0:return 0
else: return sum(n-1,nums) + nums[n-1]
print(sum(len(nums),nums))

모든 순환함수는 반복문으로 변경 가능

그 역도 성립.

순환함수는 복잡한 알고리즘을 단순하고 알기 쉽게 표현하는 것을 가능하게 함.

함수 호출에 따른 오버헤드가 있음 (매개변수 전달, 액티베이션 프레임 생성 등)



출처 : https://www.inflearn.com/course-status-2/