这种方法通过递归步骤产生Sierpinski地毯,如下所示: Sierpinski carpet
我遇到的问题是计算每一步中的平方数(变量“深”),数字将是:
方法printSquares:
first input
感谢任何帮助。
答案 0 :(得分:0)
如果您仔细注意,则为上一步中生成的每个方块添加8个额外的方块。所以,
1 square
。1 + 8^1 (additional squares)
。在第3步中,我们有1 + 8 + 8^2 (64 additional squares)
。
在步骤n中,我们有1 + 8 + ... + 8^(n-1) (8^n-1 additional squares)
。
现在,我们总结一下(参见上面链接中的公式):
此处,第一个词(a
)为1
,常用比率(r
)为8
。
1 + 8 + 8 * 8 + ..... + 8^(n-1) = 1*(8^n - 1)/(8-1) = (8^n - 1)/7
让我们测试一下:
1. If depth = 1: Squares = (8^1-1)/7 = 7/7 = 1
2. If depth = 2: Squares = (8^2-1)/7 = 63/7 = 9
3. If depth = 3: Squares = (8^3-1)/7 = 511/7 = 73
计算复杂性:O(1)
递归关系,以防万一:
让函数f
表示深度为n
的总平方数,然后:
f(n) = f(n-1) + 8^(n-1), f(1) = 1