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!