Python或C语言中的Cantor三元集

Python或C语言中的Cantor三元集,python,c,fractals,Python,C,Fractals,我想在Python或C语言中,借助递归函数生成Cantor三元集,但我不知道该怎么做。更确切地说,我希望在N次递归之后,Python返回类似于列表的内容,其中包含组成Cantor集的子集的开头和结尾。以下是我的想法,以便您可以比较您的版本: def cantor(n): return [0.] + cant(0., 1., n) + [1.] def cant(x, y, n): if n == 0: return [] new_pts = [2.*x

我想在Python或C语言中,借助递归函数生成Cantor三元集,但我不知道该怎么做。更确切地说,我希望在N次递归之后,Python返回类似于列表的内容,其中包含组成Cantor集的子集的开头和结尾。

以下是我的想法,以便您可以比较您的版本:

def cantor(n):
    return [0.] + cant(0., 1., n) + [1.]

def cant(x, y, n):
    if n == 0:
        return []

    new_pts = [2.*x/3. + y/3., x/3. + 2.*y/3.]
    return cant(x, new_pts[0], n-1) + new_pts + cant(new_pts[1], y, n-1)

for i in range(4):
    print(i, cantor(i))
在递归的每一级,您只需计算两个内部点,并将它们与嵌套调用返回的内容拼接在一起

下面是递归限制为0..3的运行:

0 [0.0, 1.0]
1 [0.0, 0.3333333333333333, 0.6666666666666666, 1.0]
2 [0.0, 0.1111111111111111, 0.2222222222222222, 0.3333333333333333, 0.6666666666666666,0.7777777777777777, 0.8888888888888888, 1.0]
3 [0.0, 0.037037037037037035, 0.07407407407407407, 0.1111111111111111, 0.2222222222222222, 0.25925925925925924, 0.2962962962962963, 0.3333333333333333, 0.6666666666666666, 0.7037037037037037, 0.7407407407407407, 0.7777777777777777, 0.8888888888888888, 0.9259259259259258, 0.9629629629629629, 1.0]

那么,你为什么不去做呢?如果你卡住了,我们会在这里。我试过了,但没有成功!我对递归函数很不放心!您需要发布您的代码,并告诉我们它有什么问题。