>백엔드 개발 >파이썬 튜토리얼 >내 Python 재귀 함수가 없음을 반환하는 이유는 무엇입니까?

내 Python 재귀 함수가 없음을 반환하는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-02 14:34:30572검색

Why Does My Python Recursive Function Return None?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.