使用以下内容:
func isosceles(triangleSides: Int)
{
var y = 0
for _ in 1...triangleSides {
y = y + 1
var stringBuilder = String()
for _ in 1...y
{
stringBuilder += "*"
}
println(stringBuilder)
}
}
isosceles(3)
我可以制作以下模式:
*
**
***
我正在尝试编写一个输出高度为2n-1和宽度为n的横向三角形的函数,因此n = 4的输出将是:
*
**
***
**
*
func triangle(triangleSides: Int)
{
var y = 0
var x = 0
var index: Int
for _ in 1...triangleSides {
y = y + 1
var stringBuilder = String()
for _ in 1...y
{
stringBuilder += "*"
}
println(stringBuilder + "\n")
}
for _ in 1..<triangleSides{
x = triangleSides - 1
var index: Int
var stringBuilder = String()
for index in stride(from: triangleSides - 1, through: 1, by: -1) {
stringBuilder += "*"
}
println(stringBuilder + "\n")
}
}
我得到了
*
**
***
**
**
显然,对我而言,这就是我试图做到这一点的问题。如果有人能指出我正确的方向,那将是值得赞赏的。
由于
答案 0 :(得分:1)
嗯,你真的需要做的事情有很多......但是,你的主要问题是你的第3和第4 for
个循环错了。
现在的样子,它在外循环中从1
循环到triangleSides - 1
,在内循环中循环triangleSize - 1
到1
。由于您没有使用for
循环的实际索引,这只会使外循环和内循环运行triangleSides - 1
次。
您要做的是从外部循环中的triangleSize - 1
循环到1
并将1
循环到内循环中外循环的当前值。如果您让for
循环完成其工作并直接分配x
而不是忽略带有_
的循环索引并手动计算{{{} {{}},则会更容易1}}。
这些更改看起来像这样(只是第二组x
循环):
for
如果你想再清理一下,你也可以让for x in stride(from: triangleSides - 1, through: 1, by: -1) {
var stringBuilder = String()
for _ in 1...x {
stringBuilder += "*"
}
println(stringBuilder + "\n")
}
循环在第一组循环中完成它的工作并去除for
的声明,{{1在函数开头的{}和x
:
y
现在,这个:
index
输出:
func triangle(triangleSides: Int)
{
for y in 1...triangleSides {
var stringBuilder = String()
for _ in 1...y
{
stringBuilder += "*"
}
println(stringBuilder + "\n")
}
for x in stride(from: triangleSides - 1, through: 1, by: -1) {
var stringBuilder = String()
for _ in 1...x {
stringBuilder += "*"
}
println(stringBuilder + "\n")
}
}
答案 1 :(得分:1)
这是我的版本:
func triangle(triangleSides: Int)
{
var y = 0
var x = 0
var index: Int
var stringBuilder = ""
for _ in 1...triangleSides {
stringBuilder += "*"
println(stringBuilder)
}
for z in reverse(1..<triangleSides) {
let index = advance(stringBuilder.endIndex, -1)
stringBuilder = stringBuilder.substringToIndex(index)
println(stringBuilder)
}
}
triangle(4)
输出:
*
**
***
****
***
**
*
评论。我认为双循环过于复杂。