본문으로 바로가기

Python Recursive Snippet Code

category Algorithm/Snippet 2023. 1. 6. 22:15
728x90
반응형

하향식 카운팅

def count_down(n):
""" 10부터 1로 감소하는 재귀함수 """
	print(n)
	if n == 1:
    	return

  returncount_down(n - 1)


상향식 카운팅

def count_up(n):
""" 1부터 10까지 증가하는 재귀함수 """
	print(n)
	if n == 10:
		return
  return count_up(n + 1)


배열의 요소를 제곱하는 재귀함수

def double_array(array, index):
	"""배열의 요소를 제곱하는 재귀함수 """
	if index == len(array):
        return array

	array[index] *= 2

	return double_array(array, index + 1)

array = [1, 2, 3, 4, 5]
print(double_array(array, 0))


정수형 배열을 받아서 총합하는 재귀함수

def mysum(arr):
	if len(arr) == 1:
		return arr[0]

    return arr[0] + mysum(arr[1: len(arr)])

print(mysum(array))


문자열 뒤집기

strs = "abcde"

def myreverse(strs, string_len):
    if string_len == 0:
        return strs[string_len]
    else:
        print(strs[string_len])

    return myreverse(strs, string_len - 1)


X 세기

strs1 = "axbxcx"

def count_x(strings, count):
    if count == -1:
        return 0

    if strings[count] == 'x':
        return 1 + count_x(strings, count - 1)
    else:
        return count_x(strings, count - 1)

print(count_x(strs1, len(strs1) - 1))

# Sol.2
strs1 = "xabxcx"

def count_x(strings):
    if len(strings) == 0:
        return 0

    if strings[-1] == 'x':
        return 1 + count_x(strings[0: len(strings) - 1])

    return count_x(strings[0: len(strings) - 1])

print(count_x(strs1))
  • Sol2
    • strings에서 slice를 이용해 0에서부터 len(str1)를 호출한다.
    • 하향식으로 접근하기위해 len(str)에서 1씩 감소 시킨다.


배열에 속한 문자열의 갯수 세기

a1 = ["ab", "c", "def", "ghij"]

def count_c(arr):
    if len(arr) == 0:
        return 0

    return len(arr[0]) + count_c(arr[1:])

print(count_c(a1))


특정 조건을 만족하는 배열 리턴하기

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

def prime_number(arr):
    if len(arr) == 0:
        return []  # 종료 조건을 리스트(배열)로 설정

    if arr[0] % 2 == 0:
        return [arr[0]] + prime_number(arr[1:])  # 짝수를 찾기 위해 arr[0]에 []를 씌워주고 재귀하는데 전체 범위를 하나 줄임

    return prime_number(arr[1:])  # 짝수가 아닌 경우 전체 범위를 하나 줄인 다음 재귀함


삼각수

tn = [1, 3, 6, 10, 15, 21]

def solve(n):
    if n == 0:
        return 0

    return solve(n - 1) + n

print(solve(6))


특정 문자열의 위치를 반환하는 재귀식

alpha1 = "abxxc"


def method(alpha: str):
    if alpha[0] == 'x':
        return 0

    return 1 + method(alpha[1:])


print(method(alpha1))
728x90
반응형

'Algorithm > Snippet' 카테고리의 다른 글

[Snippet] 정수의 자리 수 구하기  (0) 2022.12.08
[regex] Apostrophe 찾기  (0) 2022.04.17