2013-07-24 24 views
5

Bugün python'u öğreniyorum ve bu yüzden özyinelemeyle ilgili bir kod yazmayı düşünüyorum. Peki python'da aşağıdakileri nasıl gerçekleştirebiliriz?Sınıf İçinde Python Recursion

class mine: 
    def inclass(self): 
     self = mine(); 
    def recur(num): 
     print(num, end="") 
     if num > 1: 
      print(" * ",end="") 
      return num * self.recur(num-1) 
     print(" =") 
     return 1 

def main(): 
    a = mine() 
    print(mine.recur(10)) 

main() 

Kendimi tanımlamaya çalıştım, ancak bunu yapmanın bir yolunu düşünemedim. Baska öneri? Çok teşekkür ederim.


Aşağıdaki çalışmalara teşekkürler.

class mine: 
    def recur(self, num): 
     print(num, end="") 
     if num > 1: 
      print(" * ",end="") 
      return num * self.recur(self, num-1) 
     print(" =") 
     return 1 

def main(): 
    a = mine() 
    print(mine.recur(mine, 10)) 

main() 
+2

yapar ne zaman olduğunu? – Serial

+0

İki nota: 1) 'inclass' işlevi işe yaramaz bir şey yapmaz, sadece 'mine' denen bir şeyi 'self' denen yerel adaya atar ve sonra onu atar ve 2) Hiç göremiyorum Bunu bir sınıf haline getirmek için gerçek sebep - sadece düz bir 'tekrarlama() işlevi yapardı. –

+1

Sadece açıklığa kavuşturmak için: soruya cevap vermek zorunda değilsiniz. Bu yüzden bir cevabı kabul etmek için bir düğmeniz var. Öyleyse neden bu kadar çok downvot aldığınızı pek emin değilim (+1 benden karşı). – freakish

cevap

9

bir sınıfın her Bu nedenle yöntem, yani birinci bir parametre olarak self sahip olması:

def recur(self, num): 

ve şimdi çalışmalıdır.

Temelde ne sahnenin arkasında olur sen

instance.method(arg1, arg2, arg3, ...) 

Python neden kendini tanımlamak gerekiyor

method(instance, arg1, arg2, arg3, ....) 
+0

Bu, süreci yavaşlatıyor gibi görünüyor, öyle değil mi? – Rabbitybunny

+0

@Rabbitybunny Yavaşlamaktan ne demek istiyorsun? – freakish

+0

@Rabbitybunny Ne demek istiyorsun? Yöntemleri mümkün olan tek şekilde oluşturmak için her şeyi nasıl yavaşlatır? – Marcin