2015-03-16 21 views
5
kendi içinde

dan Zaten var kodu bir işlevi çağıran bir matematiksel ifadeyi alır ve bunu hesaplayan bir bot içindir. Şu anda çoğalıyorum, böl, çıkar ve ekle. Sorun olsa parantez içinde parantez ve parantez için destek oluşturmak istiyorum. Bunun olması için, önce parantez içinde ifade için parantez içermeyen ifadeler için yazdığım kodu çalıştırmam gerekiyor. Ben "(" denetlemek ve ben bir liste içinde bir liste oluşturur ve bu durumda öncelikle başka "(" ulaşmadığı sürece bir ")" ulaşıncaya kadar bir listeye içindeki ifadeyi eklemek için gidiyordu. Çıkarırım, çarpıp böleceğim ve sonra kalan sayıları bir araya getireceğim.piton -

Yani kendi içinde bir tanım/işlevi çağırmak mümkün mü?

cevap

8

Evet, bu recursion denilen temel bir programlama tekniğidir ve genellikle açıkladığınız ayrıştırma senaryoları tam tür kullanılır.

Sadece alt kata ulaşmasını ve sonsuz kendini çağıran sona olmadığında tekrarlama biter, böylece bir taban durum var emin olun.

+0

bazı örneklere http://stackoverflow.com/questions/479343/how-can-i-build-a-recursive-function-in -python –

1

Evet, @Daniel Roseman bu özyineleme denilen temel bir programlama tekniğidir söylediği gibi:

("çağırmayı bir kastettiniz?" Google özyineleme Ayrıca paskalya yumurtası dikkat edin).

im piton size bunun bir örneği örnek vererek

def recur_factorial(n): 
    """Function to return the factorial of a number using recursion""" 
    if n == 1: 
     return n 
    else: 
     return n*recur_factorial(n-1)