Apa itu rekursi?
kelebihan menggunakan rekursi
def rectangle(a, b): return a + b
Keperluan kedua adalah kes rekursif, iaitu, fungsi panggilan itu sendiri.
mari kita ambil contoh:
Dalam contoh ini, anda akan menulis fungsi faktorial yang mengambil integer (nombor positif) sebagai input. Faktorial untuk nombor diperoleh dengan mengalikan nombor dengan semua bilangan bulat positif di bawahnya. Contohnya,
, factorial(3) = 3 x 2 x 1
. factorial(2) = 2 x 1
factorial(0) = 1
pertama menentukan kes penanda aras, iaitu, faktorial (0) = 1.
Seperti yang ditunjukkan di atas, terdapat hubungan antara setiap adegan faktorial berturut -turut. Anda perlu melihat faktorial (4) = 4 x faktorial (3). Begitu juga, faktorial (5) = 5 x faktorial (4).
Bahagian kedua akan menulis fungsi yang memanggilnya sendiri.
Selepas memudahkan, fungsi yang dihasilkan akan menjadi:
jika
def factorial(n): # 定义基准情况 if n == 0: return 1 else: return n * factorial(n - 1) print(factorial(5)) # 结果 # 120
n==0
def factorial(n): # 定义基准情况 if n == 0: return 1 else: return n * factorial(n - 1) print(factorial(0)) # 结果 # 1
Kajian Kes 1: Urutan Fibonacci
urutan Fibonacci bermula dengan 0 dan 1. Nombor pertama dalam urutan Fibonacci adalah 0, nombor kedua ialah 1, dan istilah ketiga dalam urutan ialah 0 1 = 1. Istilah keempat ialah 1 1 = 2, dan sebagainya.
Untuk mendapatkan fungsi rekursif, anda perlu mempunyai dua kes penanda aras, iaitu 0 dan 1. Anda kemudian boleh menukar mod penambahan ke kes lain.
Fungsi yang dihasilkan akan menjadi:
def rectangle(a, b): return a + b
Dalam contoh ini, anda akan menulis fungsi yang mengambil rentetan sebagai input dan kemudian mengembalikan penyongsangan rentetan itu.
Mula -mula menentukan kes penanda aras, yang akan memeriksa sama ada rentetan itu sama dengan 0, dan jika ya, rentetan itu sendiri dikembalikan.
Langkah kedua adalah untuk memanggil semula fungsi penyongsangan untuk mengiris bahagian rentetan kecuali watak pertama, dan kemudian menggabungkan watak pertama ke hujung tali slice.
Fungsi yang dihasilkan adalah seperti berikut:
def factorial(n): # 定义基准情况 if n == 0: return 1 else: return n * factorial(n - 1) print(factorial(5)) # 结果 # 120
Dalam contoh ini, anda akan menulis fungsi yang mengambil array sebagai input dan kemudian mengembalikan jumlah elemen dalam senarai.
Pertama, tentukan kes penanda aras, yang akan memeriksa sama ada saiz senarai adalah sifar, dan jika benar, kembali 0.
Langkah kedua mengembalikan elemen dan panggilan ke jumlah fungsi (), menolak elemen senarai.
penyelesaiannya adalah seperti berikut:
def factorial(n): # 定义基准情况 if n == 0: return 1 else: return n * factorial(n - 1) print(factorial(0)) # 结果 # 1
Penyelesaian ke senarai kosong adalah seperti berikut:
def fibonacci(n): # 定义基准情况 1 if n == 0: return 0 # 定义基准情况 2 elif n == 1: return 1 else: return fibonacci(n - 1) + fibonacci(n - 2) print(fibonacci(5)) # 结果为 5
Tutorial ini menerangkan apa yang anda perlukan untuk menyelesaikan program kompleks dalam Python menggunakan rekursi. Ia juga harus diperhatikan bahawa rekursi juga mempunyai batasan sendiri:
Imej kecil ini dijana menggunakan Open AI Dall-E.
Atas ialah kandungan terperinci Demystifying Python Recursion. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!