재귀함수
- 함수 정의 내에 같은 이름의 함수가 올 때 이를 재귀함수라 한다.
- 반드시 탈출조건이 있어야 stack overflow를 방지할 수 있다.
- 문제가 반복취소될 때 재귀함수를 사용한다.
예시
def count_down(number):
if number < 0:
return
print(number)
count_down(number - 1)
count_down(60)
예시2
def sum(n):
if n == 0:
return 0
return n + sum(n-1)
print(sum(10))
예시3
def factorial(n):
if n == 1:
return 1
return n * factorial(n-1)
print(factorial(5))
예시4
- 희문 검사 - 반복문
- 앞으로 가도 뒤로 가도 똑같은 문자열
- 중간에 한글자가 남았을때도 앞뒤가 같아서 희문 성립
input = "abccba"
def is_palindrome(string):
n = len(string)
for i in range(n):
if string[i] != string[n-1-i]:
return False
return True
print(is_palindrome(input))
input = "tomato"
def is_palindrome(string):
if len(string) <= 1:
return True
if string[0] != string[-1]:
return False
return is_palindrome(string[1:-1])
print(is_palindrome(input))