提问人: 提问时间:5/22/2019 更新时间:5/22/2019 访问量:243
是否可以仅使用 2 个循环循环 1 个值?
is it possible to loop though 2 values using only 1 loop?
问:
我有可变变量 x 和 y,我只能使用 while (something) 循环。我想循环通过 0 ..9 和 0 ..9. 我尝试使用不同的 if 语句和不同的顺序进行多次尝试。这是我到目前为止所拥有的。
open System
let mutable x = 0
let mutable y = 0
let n = 9
while x <> n && y <> n do
Console.SetCursorPosition(x, y)
printf "."
// ...
Console.Read() |> ignore
答:
0赞
Tomas Petricek
5/22/2019
#1
执行此操作的正常方法是使用两个嵌套循环 - 如果您要遍历已知数量的项(而不是无限地迭代,直到某些条件成立),那么循环会更容易:for
for x in 0 .. 9 do
for y in 0 .. 9 do
Console.SetCursorPosition(x, y)
printf "."
嵌套循环迭代 10 次,外部循环运行嵌套循环 10 次,因此您可以获得嵌套正文的 100 次执行。
如果您迭代超过 100 个值,则只需一个循环即可完成此操作,即 这是.如果你有从 到 的数字,那么你可以通过取 和 来计算 和 :0 .. 10*10-1
0 .. 99
0
99
x
y
x=n/10
y=n%10
for n in 0 .. 10 * 10 - 1 do
let x = n / 10
let y = n % 10
Console.SetCursorPosition(20+x, y)
printf "."
评论
1赞
5/22/2019
是的,这正是我想要的,我只是在想我可能必须在那里灌输最大次数的迭代并在某个地方使用模量。谢谢!现在我可以比较速度(并不是说我期望它比嵌套循环快)。
1赞
dumetrulo
5/22/2019
在这种情况下,瓶颈将是控制台活动;我敢说你使用的循环类型(单循环、嵌套循环、手卷递归函数,甚至是序列)应该不会产生显着差异。
评论