[Python] 재귀

jake·2022년 9월 28일
0

python

목록 보기
14/20

return으로 넘길 때

def check(n):
    if n==1:
        return True
    else:
        return check(n-1)

print(check(1)) #True
print(check(4)) #True

return으로 다음 함수를 넘겨야 정상적인 재귀가 실행된다.
check(4) -> check(3) -> check(2) -> check(1) = return True
check(4) = return True



return으로 안넘기고 반환할 때

def check(n):
    if n==1:
        return False
    else:
        check(n-1)
        return True

print(check(1)) #False
print(check(4)) #True

return으로 재귀를 실행하지 않고 그냥 함수만 불러오면 아예 연관이 없는 다른 값이다
cehck(4)함수가 check(3)을 실행하지만 둘의 결과값은 서로 영향을 끼치지 않는다.
return으로 넘길 때의 경우 check(4)의 결과값은 check(1)의 결과값에 영향을 받아 True가 출력되었지만 여기서 check(4)의 결과값은 check(1)의 결과값과 독립적으로 결정된다.
호출은 하지만 결과값이 영향을 안미치는 경우이다.
check(4) -> check(3) -> check(2) -> check(1) = return False
(return True)



return값이 없을 때

def check(n):
    if n==1:
        return True
    else:
        check(n-1)
     

print(check(1)) #True
print(check(4)) #None

check(1)인 경우에만 return값이 있고 나머지 경우에는 return값이 없는 경우다.
check(4) -> check(3) -> check(2) -> check(1) = return False
(return None)
return값이 없어 None으로 출력되는 것만 빼고 return으로 안넘기고 반환할 때의 경우와 똑같다.



0개의 댓글