내 재귀 GCD 함수가 None을 반환하는 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-11-02 18:32:31
원래의
315명이 탐색했습니다.

Why Does My Recursive GCD Function Return None?

Python 재귀 함수의 반환 값 이해

재귀 함수에서는 재귀 호출의 반환 값을 올바르게 처리하는 것이 중요합니다. 원하는 결과. 특정 경우 None을 반환하는 이유를 이해하기 위해 제공된 코드를 검토해 보겠습니다.

gcdIter 함수는 반복 접근 방식을 사용하여 두 숫자의 최대 공약수(GCD)를 찾는 것을 목표로 합니다. 그러나 문제는 재귀 호출에 있습니다.

<code class="python">gcdIter(a, b%a) </code>
로그인 후 복사

함수가 재귀 호출의 반환 값을 할당하지 못합니다. 기본적으로 Python은 함수가 명시적으로 값을 반환하지 않으면 None을 반환합니다. 따라서 함수가 재귀적으로 호출되면 none 값이 올바른 GCD 값을 덮어씁니다.

이 문제를 해결하려면 return 키워드를 사용하여 재귀 호출의 반환 값을 전달해야 합니다.

<code class="python">return gcdIter(a, b % a)</code>
로그인 후 복사

이제 함수는 재귀 호출에서 얻은 GCD 값을 할당하여 올바른 결과가 반환되도록 합니다.

또한 함수 정의에서 다중 대상 할당을 사용하여 코드를 더욱 단순화할 수 있습니다.

<code class="python">def gcdIter(a, b):
    a, b = min(a, b), max(a, b)
    if b % a == 0:
        return a
    return gcdIter(a, b % a)</code>
로그인 후 복사

또는 GCD 반복 함수의 더 간결한 버전을 다음과 같이 표현할 수 있습니다.

<code class="python">def gcd_iter(a, b):
    return gcd_iter(b, a % b) if b else abs(a)</code>
로그인 후 복사

재귀 호출을 수정하고 적절한 반환 값을 사용하여 gcdIter 함수는 다음과 같이 표현할 수 있습니다. 어떤 경우에도 None을 반환하지 않고 두 숫자의 GCD를 효과적으로 찾습니다.

위 내용은 내 재귀 GCD 함수가 None을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿