2013-07-24 2 views
5

나는 단지 파이썬을 배우기 때문에 천천히 재귀에 관한 코드를 작성하려고합니다. 그래서 어떻게 파이썬에서 다음을 얻을 수 있습니까?클래스 내의 파이썬 재귀

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

나는 자기를 정의하려고 시도했지만 그렇게 할 방법을 생각할 수 없었다. 어떤 제안? 대단히 감사합니다.


예 다음 작업, 감사합니다.

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'라는 인스턴스를'self'라는 로컬 이름에 할당 한 다음 버립니다. 2) 아무 것도 보지 않습니다. 이 클래스를 만드는 진짜 이유 - 그냥'recur()'함수가 할 것입니다. –

+1

그냥 명확히하기 위해 : 당신은 질문에 대답을하지 않아도됩니다. 그래서 대답을 수락 할 수있는 버튼이 있습니다. 그 다음에 내가 왜 그렇게 많은 downvotes를 받았는지 잘 모르겠다. – freakish

답변

9

클래스의 각각에있어서 이렇게 즉, 첫번째 파라미터로서 self을 가져야한다 :

def recur(self, num): 

및 지금 작동한다.

기본적으로 어떤 장면 뒤에 발생하면

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

파이썬은 왜 자신을 정의해야 할

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

이것은 프로세스가 많이 느려지는 것처럼 보입니다. 그렇습니까? – Rabbitybunny

+0

@Rabbitybunny 무엇이 천천히가는 것을 의미합니까? – freakish

+0

@Rabbitybunny 당신은 무엇을 의미합니까? 가능한 유일한 방법으로 메소드를 만드는 데는 어떤 일이 느려 집니까? – Marcin