2014-02-05 4 views
0

파이썬을 사용하고 있으며 재귀 루프를 작성해야합니다.재귀 함수를 작성하지만 무한 루프가 발생하는 경우

1st row: 1 object (2**0) 
2nd row: 2 object (2**1) 
3rd row: 4 obj  (2**2) 
4th:  8 obj  (2**3) 

n 때까지 행과 n 열 : 아이디어는 수직 행이 곳에 사진을 형성하는 것입니다.

'스택'및 '옆'기능을 사용하여 해당 패턴을 공식화해야합니다.

내 코드는 다음과 같습니다 그러나

def fractal(Pattern, n): 
    if n== 1: 
     return beside(Pattern, n) 
    else: 
     return beside(fractal(Pattern, n-1), fractal(Pattern, n)) 

, 나는 전체 패턴을 표시 할 때, 무한 루프가있다.

+0

기본 케이스가 누락되어 있어야합니다. 함수를 다시 호출하지 않고 리턴 할 수있는 최소 단위를 식별하십시오. – gravetii

+0

당신은'옆에 돌아 오는 (프랙탈 (패턴, n - 1), 프랙탈 (패턴, n - 2))'또는 어떤 것을 의미하지 않습니까? –

+4

'fractal (Pattern, n)'은 마지막 줄에서'fractal (Pattern, n)'을 호출합니다. 그것은 무한 재귀입니다 ... 일명 [처음] (http://spdevlab.com/wp-content/uploads/2013/06/Go-Deeper-Inception-Movie.jpg) – inspectorG4dget

답변

7

fractal(Pattern, n)fractal(Pattern, n)으로 전화하십시오. 그것은 결코 그 일을 멈추지 않을 것입니다 (적어도 스택이 없어 질 때까지).

1

elsereturn 부분은 fractal(Pattern, n)이며, 현재 내부와 완전히 동일한 인수입니다. 그 길은 결코 도달하지 않을 것입니다. n == 1

더 많은 것을 알지 못해도 해결책을 말할 수 없습니다. 무한 재귀의 근원.

관련 문제