Python 재귀 함수가 None을 반환하는 이유
Python에서 재귀 함수가 예기치 않게 None을 반환하는 문제가 발생할 수 있습니다. 원인과 해결 방법을 이해하기 위해 구체적인 예를 살펴보겠습니다.
다음 코드 조각을 고려하세요.
<code class="python">def gcdIter(a, b): a, b = min(a, b), max(a, b) # Assign smaller value to 'a' and larger value to 'b' if b % a == 0: print(a) return a gcdIter(a, b % a)</code>
이 코드는 반복 접근 방식을 사용하여 최대 공약수(GCD)를 계산하기 위한 코드입니다. . 그러나 어떤 경우에는 None을 잘못 반환합니다.
이유를 이해하기 위해 재귀 호출을 살펴보겠습니다.
<code class="python">gcdIter(a, b % a)</code>
이 호출은 a의 업데이트된 값을 사용하여 gcdIter 함수에 대한 또 다른 재귀 호출을 만듭니다. 그리고 b. 그러나 이 재귀 호출의 반환 값은 무시되므로 원래 gcdIter 함수에서는 None이 반환됩니다.
해결책은 재귀 호출의 결과를 반환하는 것입니다. 올바른 버전의 함수는 다음과 같습니다.
<code class="python">def gcdIter(a, b): a, b = min(a, b), max(a, b) # Assign smaller value to 'a' and larger value to 'b' if b % a == 0: return a return gcdIter(a, b % a)</code>
위 내용은 내 Python 재귀 함수가 없음을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!