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

Mary-Kate Olsen
Lepaskan: 2024-11-03 10:59:29
asal
900 orang telah melayarinya

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)
Salin selepas log masuk

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)
Salin selepas log masuk

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)
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan