Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Kod Rekursif Saya Berterusan Tiada Kembali?

Mengapa Kod Rekursif Saya Berterusan Tiada Kembali?

Barbara Streisand
Lepaskan: 2024-10-27 01:11:30
asal
733 orang telah melayarinya

Why Does My Recursive Code Continuously Return None?

Kod Rekursif Berterusan Tiada Kembali

Memandangkan coretan kod rekursif berikut:

<code class="python">def isIn(char, aStr):
    ms = len(aStr)/2
    if aStr[ms] == char:
        print('i am here now')
        return True
    elif char > aStr[ms] and not ms == len(aStr)-1:
        aStr = aStr[ms+1:]
    elif char < aStr[ms] and not ms == 0:
        aStr = aStr[0:ms]
    else:
        return False
    isIn(char, aStr)

print(isIn('a', 'ab'))</code>
Salin selepas log masuk

Seseorang mungkin menghadapi tingkah laku yang tidak dijangka di mana kod mengembalikan Tiada dan bukannya nilai True yang dijangkakan. Isu ini timbul kerana panggilan rekursif terakhir dalam blok else tidak mempunyai pernyataan pemulangan yang jelas.

Kod yang diperbetulkan harus mengandungi tambahan berikut:

<code class="python">else:
    return isIn(char, aStr)</code>
Salin selepas log masuk

Dalam senario ini, apabila fungsi berulang , ia memberikan nilai pulangan panggilan rekursif kepada fungsi itu sendiri. Jika panggilan rekursif gagal mencari aksara, ia mengembalikan False, yang kemudiannya berfungsi sebagai nilainya sendiri.

Tanpa pernyataan pemulangan yang jelas pada panggilan rekursif akhir, fungsi itu akan sampai ke penghujung tanpa ditentukan nilai pulangan. Akibatnya, ia secara tersirat akan mengembalikan Tiada, itulah sebabnya kod asal terus mengembalikan Tiada.

Atas ialah kandungan terperinci Mengapa Kod Rekursif Saya Berterusan Tiada Kembali?. 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