Rumah >pembangunan bahagian belakang >Tutorial Python >Cara Melaksanakan Rekursi dengan Berkesan dalam Python
Rekursi ialah teknik pengaturcaraan di mana fungsi memanggil dirinya sendiri untuk menyelesaikan masalah. Dalam artikel ini, kami akan menumpukan pada melaksanakan rekursi dalam Python untuk mencari jumlah integer dalam senarai, serta aplikasi rekursif biasa yang lain.
Andaikan kami mempunyai fungsi, listSum, yang mengambil senarai integer dan mengembalikan jumlahnya. Berikut ialah pelaksanaan rekursif asasnya:
<code class="python">def listSum(ls): # Base condition: if the list is empty, return 0 if not ls: return 0 # Recursive call with the rest of the list return ls[0] + listSum(ls[1:])</code>
Untuk mengoptimumkan rekursi di atas, kita boleh menggunakan rekursi panggilan ekor. Ini melibatkan menghantar hasil semasa bersama-sama dengan senarai ke panggilan rekursif:
<code class="python">def listSum(ls, result): if not ls: return result return listSum(ls[1:], result + ls[0])</code>
Untuk mengelak daripada membuat senarai perantaraan, kita boleh menghantar indeks elemen semasa ke panggilan rekursif:
<code class="python">def listSum(ls, index, result): if index == len(ls): return result return listSum(ls, index + 1, result + ls[index])</code>
Jika anda lebih suka pendekatan yang lebih terkapsul, anda boleh mentakrifkan fungsi dalaman dalam listSum untuk mengendalikan logik rekursif:
<code class="python">def listSum(ls): def recursion(index, result): if index == len(ls): return result return recursion(index + 1, result + ls[index]) return recursion(0, 0)</code>
Untuk kemudahan, anda boleh menggunakan parameter lalai untuk memudahkan panggilan fungsi:
<code class="python">def listSum(ls, index=0, result=0): if index == len(ls): return result return listSum(ls, index + 1, result + ls[index])</code>
Rekursi juga boleh digunakan untuk mengira kuasa . Pertimbangkan fungsi kuasa yang mengambil asas dan eksponen:
<code class="python">def power(base, exponent): if exponent <= 1: return base return base * power(base, exponent - 1)</code>
Untuk mengoptimumkan kuasa menggunakan rekursi panggilan ekor:
<code class="python">def power(base, exponent, result=1): if exponent <= 0: return result return power(base, exponent - 1, result * base)</code>
Atas ialah kandungan terperinci Cara Melaksanakan Rekursi dengan Berkesan dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!