1. 함수에서 재귀호출 사용하기
def hello():
print('Hello, world!')
hello()
hello()
Hello, world!
Hello, world!
Hello, world!
...(생략)
Traceback (most recent call last):
File "C:\project\recursive_function_error.py", line 5, in <module>
hello()
File "C:\project\recursive_function_error.py", line 3, in hello
hello()
File "C:\project\recursive_function_error.py", line 3, in hello
hello()
File "C:\project\recursive_function_error.py", line 3, in hello
hello()
[Previous line repeated 974 more times]
File "C:\project\recursive_function_error.py", line 2, in hello
print('Hello, world!')
RecursionError: maximum recursion depth exceeded while pickling an object
RecursionError 발생
재귀호출에 종료 조건 만들기
Hello, world! 5
Hello, world! 4
Hello, world! 3
Hello, world! 2
Hello, world! 1
def hello(count):
if count == 0: # 종료 조건을 만듦. count가 0이면 다시 hello 함수를 호출하지 않고 끝냄
return
print('Hello, world!', count)
count -= 1 # count를 1 감소시킨 뒤
hello(count) # 다시 hello에 넣음
hello(5) # hello 함수 호출
재귀호출로 팩토리얼 구하기
팩토리얼은 1부터 n까지 양의 정수를 차례대로 곱한 값이며 !(느낌표) 기호로 표기합니다.
예를 들어 5!은 5 * 4 * 3 * 2 * 1이며 결과는 120입니다.
def factorial(n):
if n == 1: # n이 1일 때
return 1 # 1을 반환하고 재귀호출을 끝냄
return n * factorial(n - 1) # n과 factorial 함수에 n - 1을 넣어서 반환된 값을 곱함
print(factorial(5))
120
회문 구하기
def is_palindrome(word):
if len(word) < 2:
return True
if word[0] != word[-1]:
return False
return is_palindrome(word[1:-1])
print(is_palindrome('hello'))
print(is_palindrome('level'))
print(is_palindrome('1111'))
fibonach수
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597
def fib(x):
if x == 0:
return 0
elif x == 1:
return 1
else:
return fib(x - 1) + fib(x - 2)
n = int(input())
print(fib(n))
함수를 변수 또는 리스트에 넣어서 호출할 수 있나요?
함수는 변수에 할당하거나 리스트에 넣어서 호출할 수 있습니다. 단, ( )(괄호)를 붙이지 않고 함수를 그대로 넣어야 합니다. 만약, ()를 붙이면 반환값이 들어갑니다.
def hello():
print('Hello, world!')
x = hello # 함수를 변수에 할당
x() # Hello, world!: 변수에 들어있는 함수 호출
y = [hello, hello] # 함수를 리스트에 넣음
y[0]() # Hello, world!: 리스트에 들어있는 함수 호출
y[1]() # Hello, world!: 리스트에 들어있는 함수 호출
순수 함수와 비순수 함수는 무엇인가요?
순수 함수(pure function)는 함수의 실행이 외부 상태에 영향을 끼치지 않는 함수를 뜻합니다. 따라서 순수 함수는 부수효과(side effect)가 없어야 하고 입력 값이 같으면 언제나 같은 출력 값을 반환합니다.
def add(a, b): # 함수 실행이 외부 상태에 영향을 끼치지 않음
return a + b
print(add(1, 2))
반대로 비순수 함수(impure function)는 수정자 함수(modifier function)라고도 하는데 함수의 실행이 외부 상태에 영향을 끼치는 함수입니다.
number_list = [1, 2, 3]
def append_number(n): # 함수 실행이 외부 상태에 영향을 끼침
number_list.append(n) # 함수 외부에 있는 number_list의 상태가 바뀜
append_number(4)
'BASIC' 카테고리의 다른 글
클로저 (0) | 2023.11.23 |
---|---|
람다 표현식(lambda expression) (1) | 2023.11.22 |
함수 (1) | 2023.11.19 |
Exception (0) | 2023.11.19 |
덕타이핑 / 믹스인 (1) | 2023.11.19 |
댓글