20240107 백준 11653, 2309
재귀함수 작성법
재귀함수란 함수 안에 자신의 함수를 다시 호출하는 함수. 재귀함수는 자신의 로직을 내부적으로 반복하다가 일정한 조건이 만족되면 함수를 이탈하여 결과를 도출함.
재귀함수를 구현하는 방법에는 기본적으로 2가지가 있음
첫번째 재귀함수 구현법
def function(매개변수):
if 매개변수 > 일정값:
return function(매개변수보다 작은 값)
else:
return 일정값, 매개변수, 또는 특정값 # 재귀 호출 종료
이 방법은 재귀함수를 호출하는 부분을 상단에 두고 표현할 수 있는 방법이다.
일정한 조건을 만족하지 않으면, 계속해서 자기 자신의 함수로 되돌린다.
두번째 재귀함수 구현법
def function(매개변수):
if 매개변수 <= 일정값:
return 일정값, 입력값, 또는 특정값 # 재귀 호출 종료
function(매개변수보다 작은 값)
return 결과값
이 방법은 재귀함수를 호출하는 부분을 아래부분에 삽입하는 것이다.
ex. 소인수분해 코드 재귀함수로 작성하기(백준 11653)
list = []
def factorization(a):
num = 2 # (1)
while a > 1:
if (a % num) == 0:
list.append(num)
factorization(a // num)
break # (2)
else:
num += 1
(1) : num = 2를 함수 밖, 즉 def factorization(a): 밖, list = [] 코드 밑에 적었더니 에러가 났다.
(2) : break를 적지 않으니 무한루프에 빠졌다. return을 하지 않은 코드기 때문에 재귀 호출을 한 뒤에 break를 통해 while문을 빠져나갈수 있게 해줘야 하는것 같았다.
아래 코드는 break를 쓰지 않고 return문으로 작성한 코드이다.
N = int(input())
list = []
def factorization(a):
num = 2
while a > 1:
if (a % num) == 0:
list.append(num)
return factorization(a//num)
else:
num += 1
내장함수 sum()
모듈 import 필요 없이 그냥 sum(list) 하면 됨.
시작값을 0이 아닌 특정한 값을 사용하고 싶으면 sum(list, 시작값) 하면 됨. 그러면 list 요소들 합 + 시작값을 도출함.
Today : 백준 2775, 11653, 2309 문제 풀음. 2775 해결 못함.(-> 해결. 1/17)
Leave a comment