Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah `gcdIter` Mengembalikan `Tiada` Apabila Mengira GCD?

Mengapakah `gcdIter` Mengembalikan `Tiada` Apabila Mengira GCD?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-03 10:59:29904semak imbas

Why Does `gcdIter` Return `None` When Calculating GCD?

Memahami Gelagat Membingungkan Fungsi Rekursif Python: Mengapa gcdIter Tidak Kembali?

Apabila berurusan dengan fungsi rekursif, adalah penting untuk memahaminya mekanisme pemulangan. Pertimbangkan fungsi gcdIter berikut, bertujuan untuk mengira pembahagi sepunya terbesar (GCD) bagi dua nombor. Walau bagaimanapun, untuk nilai input tertentu (cth., 306 dan 136), ia secara tidak dijangka mengembalikan Tiada.

Isunya terletak pada bahagian rekursif kod:

gcdIter (a,b%a)

Semasa fungsi membuat panggilan rekursif kepada dirinya sendiri dengan parameter yang berkaitan, ia gagal mengendalikan nilai pulangan panggilan itu. Untuk mengekalkan hasil GCD, nilai pulangan mesti dihantar semula ke rantaian:

return gcdIter (a,b%a)

Selain itu, adalah bijak untuk menggunakan tugasan pembolehubah berbilang sasaran untuk menyelaraskan kod:

def gcdIter(a, b):
    a, b = min(a, b), max(a, b)
    if b % a == 0:
        return a
    return gcdIter(a, b % a)

Dengan menangani isu ini, gcdIter akan secara konsisten mengembalikan GCD untuk sebarang nilai input yang diberikan, seperti yang dijangkakan.

Atas ialah kandungan terperinci Mengapakah `gcdIter` Mengembalikan `Tiada` Apabila Mengira GCD?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn