Bagaimana saya bisa membangun fungsi rekursif dalam python?
Saya bertanya-tanya apakah yang Anda maksudkan adalah "recursive". Berikut adalah contoh sederhana dari fungsi rekursif untuk menghitung fungsi faktorial:
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n - 1)
Dua elemen kunci dari algoritma rekursif adalah:
n == 0
faktorial(n - 1)
Katakanlah Anda ingin membangun: u(n+1)=f(u(n)) dengan u(0)=u0
Salah satu solusinya adalah dengan mendefinisikan fungsi rekursif sederhana:
u0 = ...
def f(x):
...
def u(n):
if n==0: return u0
return f(u(n-1))
Sayangnya, jika Anda ingin menghitung nilai u yang tinggi, Anda akan mengalami kesalahan stack overflow.
Solusi lain adalah perulangan sederhana:
def u(n):
ux = u0
for i in xrange(n):
ux=f(ux)
return ux
Tetapi jika Anda menginginkan beberapa nilai u untuk nilai n yang berbeda, ini kurang optimal. Anda bisa menyimpan semua nilai dalam sebuah larik, tetapi Anda mungkin mengalami kesalahan kehabisan memori. Anda mungkin ingin menggunakan generator sebagai gantinya:
def u(n):
ux = u0
for i in xrange(n):
ux=f(ux)
yield ux
for val in u(1000):
print val
Ada banyak opsi lain, tetapi saya kira ini adalah yang utama.
Contoh fungsi rekursif:
def recursive(string, num):
print "#%s - %s" % (string, num)
recursive(string, num+1)
Jalankan dengan:
recursive("Hello world", 0)