【发布时间】:2013-11-25 07:33:41
【问题描述】:
我只是在看维基百科页面,我发现了这个Sierpinski triangle
我想通过java,c,scala 等创建这个三角形。
1
111
11111
1111111
111111111
11111111111
1111111111111
111111111111111
1 1
111 111
11111 11111
1111111 1111111
111111111 111111111
11111111111 11111111111
1111111111111 1111111111111
111111111111111 111111111111111
1 1
111 111
11111 11111
1111111 1111111
111111111 111111111
11111111111 11111111111
1111111111111 1111111111111
111111111111111 111111111111111
1 1 1 1
111 111 111 111
11111 11111 11111 11111
1111111 1111111 1111111 1111111
111111111 111111111 111111111 111111111
11111111111 11111111111 11111111111 11111111111
1111111111111 1111111111111 1111111111111 1111111111111
111111111111111 111111111111111 111111111111111 111111111111111
我只是创建简单的程序,就像我们在c 中创建简单模式一样,我在scala 中写了这个
def ft(n: Int) = {
for (i <- 1 to n) {
for (j <- n to i by -1) {
print(" ")
}
for (k <- 1 to 2 * i - 1) {
print("1")
}
print("\n")
}
}
打印这个
1
111
11111
1111111
111111111
还有这个:
def triangle = {
for (i <- 1 to 5) {
for (j <- 1 to 5) {
if (j <= i)
print("1")
else
print(" ")
}
for (j <- 5 to 1 by -1) {
if (j <= i)
print("1");
else
print(" ");
}
print("\n");
}
}
如何创建这个谢尔宾斯基三角形?
给我解决这个问题的想法?
【问题讨论】:
-
您已标记 5 种语言。您需要哪种语言的解决方案?
-
我只是在寻找
logic来解决这个三角形。您可以提供任何语言 -
逻辑是使用递归。每个三角形可以分成四个较小的三角形。将中间一个留空,然后在其他三个上递归调用自己。在某个任意点停止递归并使用您的例程绘制法线三角形。
-
@RahulKulhari:你使用的工具确实倾向于“color”你用来解决这个问题的方法。例如,Java 是一种纯面向对象的语言,而 C 则不是面向对象的。在 Scheme/lisp 中解决这个问题将是一个全功能的努力,JavaScript 也是如此,而使用 Perl 将产生代码高尔夫风格的答案......
标签: java c algorithm scala logic