2014-02-05 41 views
0

我正在使用Python,并且我的任务是编写一个递归循环。我们的想法是,以形成一个画面,其中有垂直行:编写递归函数,但获得无限循环

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

'分形(模式,n)'在最后一行中调用'分形(模式,n)'。这是无限的递归...... aka [inception](http://spdevlab.com/wp-content/uploads/2013/06/Go-Deeper-Inception-Movie.jpg) – inspectorG4dget

回答

7

您正在致电fractal(Pattern, n)fractal(Pattern, n)。它永远不会停止这样做(至少在它用完之前)。

1

来自else条件的return的一部分是fractal(Pattern, n),与当前内部的参数完全相同。那条道路永远不会达到n == 1

不知道更多,我不能说解决方案。只是无限递归的来源。