我正在编写一个简单的“proc”来计算阶乘。我想了解为什么我的函数在没有 return 语句的情况下不起作用。
根据 TCL 文档,在没有明确“返回”的情况下定义的函数将返回其主体中最后执行的命令的值。
proc fac { n } {
if { $n == 1 } {
return 1
}
puts $n
set n [expr {$n - 1}]
return [expr {[fac $n ] * $n}]
}
puts [fac 5] # ans 24
删除“return”后,我收到以下错误消息:
invalid command name "1"
while executing
"[expr {[fac $n ] * $n}] "
(procedure "fac" line 7)
invoked from within
我预计如果没有明确的“返回”,该函数也应该返回 24。