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
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)
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으로 안넘기고 반환할 때의 경우와 똑같다.