我正在尝试打印一个因子:
输入:一个int n。
输出:1表的阶乘结果表!到n!。
这是我做的:
let toBigInt (n: int) = bigint(n) // Convert an "int" to a "bigint".
// Factorial with bigint support:
let fac n =
[1..n]
|> List.map toBigInt
|> List.reduce (*)
let printFacTable n =
let listNum = [1 .. n]
let listFac = listNum |> List.map fac
let numFacPair = List.zip listNum listFac
for (k, v) in numFacPair
do printfn "%d ! = %A" k v
结果:
> printFacTable 12;;
1 ! = 1
2 ! = 2
3 ! = 6
4 ! = 24
5 ! = 120
6 ! = 720
7 ! = 5040
8 ! = 40320
9 ! = 362880
10 ! = 3628800
11 ! = 39916800
12 ! = 479001600
val it : unit = ()
结果很好。我想通过! =
前面的调整填充来垂直对齐!
。假设此程序接受最多8位数作为输入。我想填充应该是:
let padding = 8 - eachNum.length
但我不知道怎么把它放到程序块中。任何的想法?
答案 0 :(得分:2)
如Printf
module documentation中所述,您只需指定字段的宽度:
printfn "%8d ! = %A" k v
答案 1 :(得分:1)
试试这个:
do printfn "%8d ! = %A" k v
答案 2 :(得分:1)
我认为最好在左侧进行格式化:
for (k, v) in numFacPair
do printfn "%-2d ! = %A" k v
然后printFacTable 12:
1 ! = 1
2 ! = 2
3 ! = 6
4 ! = 24
5 ! = 120
6 ! = 720
7 ! = 5040
8 ! = 40320
9 ! = 362880
10 ! = 3628800
11 ! = 39916800
12 ! = 479001600