练习递归实现阶乘计算以及return的使用方法。
proc recurrence { n } {
if { ![string is integer $n] } {
return -code error "This is not an integer!"
}
if { $n<=2 } {
return $n
} else {
set val [expr $n*[recurrence [expr $n-1]]]
}
return $val
}
以上程序需要注意:
1. return可返回一个值,同时也可以返回错误代码和错误信息。本例练习了上述两种简单用法,如果返回错误及其错误信息,需要使用-code error。
2. TCL中如果要进行表达式求值,需要使用expr,否则表达式会被当作字符串处理。
set x 3
puts $x-1
此时$x表示变量的值,输出是3-1。
set x 3
puts [expr $x-1]
此时puts输出2。
3. 通过string is *可以判断string是否可被识别为指定类型,*可以为integer、boolean、ascii、alpha、alnum、double、graph、print、list、punct、upper、lower、xdigit、wideinteger、wordchar、false、true等等。