取得と再帰
💛 サーチ(サーチ)
# 선형 검색 알고리즘
# 하나의 반복문과 리스트의 인덱스, 조건문을 활용하여 특정값을 검색할 때까지 반복한다.
def linear_search(arr, target):
#입력배열의 각 항목을 반복
for index in range(len(arr)):
#현재 인덱스의 항목이 비교대상과 같은지 확인
if arr[index] == target:
return index
#전체 배열을 반복할 수 있다면, 비교 대상은 존재하지 않는다.
#찾는 대상이 없다면 의미없는 숫자인 -1을 반환한다.
return -1
💛 再帰
欠点:再帰を使用すると、関数が繰り返され、より多くのメモリが使用されます.
分割征服法
하나의 문제를 분할하고 해결하는 구체적인 방법론으로 하위 문제를 쉽게 해결할 수 있을 때까지 문제를 더 작은 단위로 나누는 것을 의미한다.
my_list = [1,2,3,4,5]
def sum_list(items):
sum = 0
for i in items:
sum = sum + i
return sum
sum_list(my_list)
#아래의 코드처럼 문제를 두 개의 하위 문제로 나눌 수 없을 때까지 분할할 수 있다.
1 + 2 + 3 + 4 + 5
(1 + (2 + 3 + 4 + 5))
(1 + (2 + (3 + 4 + 5)))
(1 + (2 + (3 + (4 + 5))))
(1 + (2 + (3 + (4 + (5)))))
#분리된 내용을 의사코드를 활용해서 먼저 로직을 해석해볼 수 있다.
sum_list(items)
if the length of item is 1:
return the 1 item in the list
else:
return the first items from the list + sum_list(the rest of the items)
#의사코드를 구현되는 코드로 만들어주기
def sum_list(items):
if len(items) == 1:
return items[0]
else:
return items[0] +sum_list(items[1:])
回帰条件1:基本的な状況があります。
1)基本的な状況(基本的な状況または条件)が必要です.
def sum_list(items):
if len(items) == 1: #base case
return items[0]
else:
return items[0]+sum_list(items[1:])
回帰条件2:付加条件と基本状況の違い
2)基本状況と付加条件に差があること.
def sum_list(items):
if len(items) == 1: # Base Case(항목이 1개인 경우가 기본 케이스)
return items[0]
elif len(items)>1:
print("items:",items[0:])
return items[0] + sum_list(items[1:]) # items[:]는 한 항목씩 감소한다.
print("sum_list:",sum_list([2,3,4,5]))
上の再帰ではsum listに渡されるItemsが逐次減少する.回帰条件3:自己(関数)を呼び出す必要があります。
3)復帰条件を満たすためには,自分自身を呼ぶ必要がある.
△関数の最後に再帰的な操作を行う場合が多いようです.
def sum_list(items):
if len(items) == 1: # Base Case
return items[0]
else:
return items[0] + sum_list(items[1:]) # 반복적으로 자기자신을 호출한다.
Reference
この問題について(取得と再帰), 我々は、より多くの情報をここで見つけました https://velog.io/@yuns_u/검색과-재귀テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol