2013-07-24 22 views
5

今日はPythonを学ぶだけで、再帰についてのコードを書くことを考えています。 それでは、私たちはどのようにPythonで次のことを達成できますか?クラス内でのPython再帰

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() 

私は自己を定義しようとしましたが、そうする方法は考えられませんでした。助言がありますか? ありがとうございます。


はい次の作業、ありがとうございます。

def recur(self, num): 

、それが動作するようになりました:

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

をしていますか? – Serial

+0

2つのメモ:1) 'inclus'関数は役に立たないことを何もしません。' my'というローカル名に 'my'のインスタンスを割り当てて、それを投げ捨てるだけです.2)私は何も見ませんこれをクラスにする本当の理由は、まさに 'recur()'関数だけです。 –

+1

ちょうど明確にする:あなたは質問に答えを入れる必要はありません。そのため、回答を受け入れるボタンがあります。それ以外の理由で私はあなたがなぜ非常に多くのダウンボントを受け取ったのかはわかりません。 – freakish

答えて

9

クラスの各メソッドは、最初のパラメータとしてselfを持っている、すなわちこれを行う必要があります。

あなたは

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

を行う際に、基本的にどのようなシーンの後ろに起こるかはPythonは、あなたが自己を定義する必要がない理由

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

これはプロセスをたくさん遅くしているようですね。 – Rabbitybunny

+0

@Rabbitybunny何が減速しているのですか? – freakish

+0

@Rabbitybunnyどういう意味ですか?可能な限り唯一の方法でメソッドを作成するには、何が遅くなるのでしょうか? – Marcin