2013-07-15 9 views
1

while 또는 for를 사용하는 대신 루프가 계속 호출되어 계속 호출됩니다. (여러 가지 이유로 이것을해야합니다.)Python 문제 - 'reverse function call'

나는 기능면에서 특정 조건 하에서 나머지 코드는 건너 뛰고 다음 반복을 진행하는 데 매우 유용 할 것이다. .

기능을 종료 기능 '계속', 또는 '역 함수 호출'의 종류의 동등한이 있는지 궁금 해서요 .. 당신은 무엇을 설명하고하는 것은 "재귀"라고

+0

예제 코드를 보여줘야합니다. 함수가 반복적으로 자신을 호출하고 있다는 것을 의미합니까? 너는 그걸 영원히 할 수 없다. –

+1

'역 함수 호출'은'return'이됩니다 – sapi

+3

'무엇이든 : return' –

답변

1

당신에게 재귀 호출이 수행되는 조건을 처리하여 "반복을 건너 뛸 수"있습니다.

예를 들어

, 이제 우리가 여기에서 우리는 해결책을 써서 방법은, 1에서 10까지의 모든 숫자를 추가 할 수 있지만 루프와 숫자 5를 건너 뛰는해야한다고 가정 해 봅시다, 결과는 counter 변수에 끝 :

재귀를 사용
counter = 0 
for n in range(1, 11): 
    if n == 5: 
     continue 
    counter += n 

은, 위의 코드는 다음에 해당합니다 :

def adder(n): 
    if n > 10: # base case of recursion 
     return 0 
    if n == 5: # recursive call to skip 
     return adder(n+1) 
    else:  # normal recursive call 
     return n + adder(n+1) 

우리는 다음과 같이 호출하면, 우리는 예상 된 결과 얻을 :

adder(1) 
=> 50 

예를 들어, 현재 반복을 건너 뛰고 다음 반복으로 건너 뛰기 때문에 if n == 5은 함수에 대해 continue의 역할을합니다. 방법? 단순히 이 아니라은 재귀 호출에서 아무 것도하지 않고 그냥 다음 값으로 이동합니다. 이것을 "정상적인"재귀 호출과 비교하면 호출 결과에 n이 추가됩니다.

(의견에 제안 된대로) 단순히 함수에서 돌아 오는 것은 이 아니며이 아니며 반복을 건너 뛸 때와 마찬가지로 "루프에서 깨기"와 유사합니다. "계속 반복"하려면 위와 같이 재귀를 다시 호출해야합니다.

+0

에 표시된 것처럼 재귀를 다시 호출해야합니다. 나는 그 함수가 반복적으로 자신을 호출하는 것이 아니라 일종의 디스패처에 의해 반복적으로 호출된다고 가정하고 있다고 생각합니다. 문제는 무엇이 일어나고 있는지 명확하지 않습니다. – user2357112