所以第一個是 for loop 的版本。
#!/usr/bin/env tclsh
for {set nx 0} {$nx < 10} {incr nx} {
for {set ny 0} {$ny < 10} {incr ny} {
puts "[format "%d x %d = %2d" $nx $ny [expr $nx * $ny]]"
}
}
第二個版本是我在寫同樣的東西(也是九九乘法表),因為 Erlang 沒有 for 和 while 迴圈,所以我先建立一個 list,然後再使用 Erlang 提供的 lists:foreach 印出結果。我用同樣的精神寫 Tcl 九九乘法表的第二個版本(同時測試 mathop)。
#!/usr/bin/env tclsh
set x [list 1 2 3 4 5 6 7 8 9]
set y [list 1 2 3 4 5 6 7 8 9]
foreach nx $x {
foreach ny $y {
set z [::tcl::mathop::* $nx $ny]
puts "[format "%d x %d = %2d" $nx $ny $z]"
}
}
最後是遞迴的版本:
#!/usr/bin/env tclsh
namespace path {::tcl::mathop ::tcl::mathfunc}
proc mul {x y} {
puts [format "%d x %d = %2d" $x $y [* $x $y]]
if {$y < 9} {
mul $x [+ $y 1]
} else {
if {$x < 9} {
mul [+ $x 1] 1
} else {
return
}
}
}
mul 1 1
沒有留言:
張貼留言