파이썬 print 재귀함수, 반복 출력, 문자열 거꾸로 뒤집기

파이썬 재귀함수 2개 소개합니다.


하나는 원하는 횟수만큼 문자열을 반복 출력하는 것이고, 다른 하나는 재귀함수 이용해 문자열 거꾸로 뒤집기하는 것입니다.


1. 문자열 반복 출력

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def hello1(a, i):
    if i >= 3:
        return
 
    print(a)
    hello1(a, i+1)
 
def hello2(a, i):
    if i <= 0:
        return
 
    print(a)
    hello2(a, i-1)
 
hello1('three', 0)
hello2('five', 5)
cs


■ 결과



함수 hello1 은 문자열, 반복 횟수를 인자로 전달하면 여러번 출력됩니다.

1번 라인에 선언된 함수 내부에 6번 라인이 존재합니다.

6번 라인에서 자기가 속한 함수를 다시 호출하므로 재귀함수가 성립됩니다.

2번 라인에서 반복 횟수를 확인해 함수 종료 여부를 결정합니다.


함수 hello2 는 재귀함수 hello1 과 똑같습니다. 반복 횟수를 하나씩 감소하며 0이 되었을 때 재귀함수는 종료됩니다.

2. 문자열 거꾸로 뒤집기 출력

1
2
3
4
5
6
7
8
9
10
def reverseText1(a, i):
    if i >= len(a):
        return
 
    reverseText1(a, i+1)
    print(a[i], end='')
 
= 'example'
 
reverseText1(a, 0)
cs


■ 1. 결과



재귀함수에서 문자열 길이를 인덱스로 설정해 하나씩 감소하며 거꾸로 문자열을 출력합니다.


아래는 같은 기능의 파이썬 재귀함수입니다.


결과는 위와 똑같으며, 인덱스 계산하는 방법만 다릅니다.





1
2
3
4
5
6
7
8
9
10
def reverseText2(a, i):
    if i <= 0:
        return
 
    print(a[i-1], end='')
    reverseText2(a, i-1)
 
= 'example'
 
reverseText2(a, len(a))
cs


■ 2. 결과






1
2
3
4
5
6
7
8
9
10
def reverseText3(a):
    if len(a) == 0:
        return
 
    print(a[-1], end='')
    reverseText3(a[:-1])
 
= 'example'
 
reverseText3(a)
cs


■ 3. 결과






1
2
3
4
5
6
7
8
9
10
def reverseText4(a):
    if len(a) == 0:
        return
 
    reverseText4(a[1:])
    print(a[0], end='')
 
= 'example'
 
reverseText4(a)
cs



■ 4. 결과




관련 글


파이썬 딕셔너리 예제 4가지, for반복문 중심


파이썬 정수 최대값 구하기 소스 2개, random 함수


파이썬 정렬 소스, 숫자 문자열 예제 6개 sorted join



ⓒ written by vicddory

댓글(0)

Designed by JB FACTORY