본문 바로가기
코딩 연습/코딩배우기

[python] 파이썬 재귀함수, 람다 함수 연습

by good4me 2020. 9. 21.

goodthings4me.tistory.com

 

■ 재귀 함수

def recursive_ex1(n):
    if n == 1:
        return 1
    else:
        f = n * recursive_ex1(n - 1)
        print(f, end=' ')
        return f

recursive_ex1(5)  # 2 6 24 120 

'''
n = 5	f = 5 * recursive_ex1(4); print(f, end=' '); return f
n = 4	f = 4 * recursive_ex1(3); print(f, end=' '); return f
n = 3	f = 3 * recursive_ex1(2); print(f, end=' '); return f
n = 2	f = 2 * recursive_ex1(1); print(f, end=' '); return f
n = 1	if n == 1: return 1

f = 2 * 1		print(2) return 2
f = 3 * 2		print(6) return 6
f = 4 * 6		print(24) return 24
f = 5 * 24	print(120) return 120
'''


def recursive_ex2(n):
    if n >= 1:
        print(n, end= ' ')
        recursive_ex2(n - 1)
    else:
        return
    
res = recursive_ex2(10)  # 10 9 8 7 6 5 4 3 2 1 



def recursive_ex3(n):
    if n >= 1:
        recursive_ex3(n - 1)
        print(n, end= ' ')
    else:
        return
    
res = recursive_ex3(10)  # 1 2 3 4 5 6 7 8 9 10 

good4me.co.kr

 

■ 람다 함수

mysum = lambda n1, n2: n1 + n2
print(mysum(10, 20))  # 30


# 람다 default 매개변수
mymul = lambda n1, n2 = 5: n1 * n2
print(mymul(5, 4), mymul(5))  # 20 25


# 람다 자체 호출
print((lambda n1, n2: n1 ** n2)(2, 10))  # 1024  --> (lambda 함수)(2, 10)



# 리스트 값 수정을 위한 함수, 람다, 리스트컴프리헨션

# 함수
def add_list(n):
    for i in range(len(n)):
        n[i] = n[i] + 10

lst1 = [1, 2, 3, 4]

add_list(lst1)
print(lst1)  # [11, 12, 13, 14]


# 람다 함수
lst2 = [1, 2, 3, 4]
lst2 = list(map(lambda n: n + 10, lst2))
print(lst2)  # [11, 12, 13, 14]


# 리스트 컴프리헨션
lst3 = [1, 2, 3, 4]
lst3 = [n + 10 for n in lst3]
print(lst3)  # [11, 12, 13, 14]



# 두 리스트 요소 더하기 

# 함수
def add_list2(n1, n2):
    res = []
    for i in range(len(n1)):
        res.append(n1[i] + n2[i])
    return res

lst4 = [1, 2, 3, 4]
lst5 = [5, 6, 7, 8]

print(add_list2(lst4, lst5))  # [6, 8, 10, 12]


# 람다 함수
add_lst = list(map(lambda n1, n2: n1 + n2, lst4, lst5))
print(add_lst)  # [6, 8, 10, 12]

 

댓글