动态循环

时间:2016-09-28 11:40:01

标签: .net f# functional-programming

我正在尝试构建一个使用两个for循环的程序,并且在调用时应该打印出来:

      1 2 3 4 5 6 7 8 9 10
 2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
etc.
let mutable s:string = ""

let loopMulTable n = 
  for i in 1..10 do
    s <- sprintf "%i " (n*i)
    printf "%s " s
    for j in n-1 do
      s <- sprintf "%i " (n*i)
loopMulTable 2

现在我不太关心间距,只是制作正确的照片。

我不确定我的for j in n-1 do循环有什么问题,但它给了我错误:FS0043:类型&#39; int32&#39;与seq&lt;&#39; a&gt;类型不兼容。

我可能需要进行某种类型的转换,但不确定如何。

谢谢!

找出解决方案:

let mutable s:string = ""

let loopMulTable n = 
  for i in 1..n do
    printf "\n"
    for j in 1..10 do
      s <- sprintf "%5i " (i*j)
      printf "%s " s
loopMulTable 10

2 个答案:

答案 0 :(得分:2)

只是为了好玩,这是一个更惯用的版本:

[for i in 1..10 ->
    List.init 10 (fun j -> (j+1)*i)]

答案 1 :(得分:0)

找出解决方案:

let mutable s:string = ""

let loopMulTable n = 
  for i in 1..10 do
    s <- sprintf "%i " (n*i)
    printf "%s " s
    for j in n-1 do
      s <- sprintf "%i " (n*i)
    s
loopMulTable 2