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

Mengapa Kod Rekursif Saya Berterusan Tiada Kembali?

Barbara Streisand
Barbara Streisandasal
2024-10-27 01:11:30631semak imbas

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>

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>

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!

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