TCL中的阶乘

TCL中的阶乘,tcl,Tcl,因为我是TCL的新手,所以需要一些帮助 需要写一个程序的阶乘,平方根,平方,立方和立方根的任何给定的数字(让它是10)。不使用钥匙,例如:sqrt 谢谢。大多数操作都可以通过**操作员完成: set x 7 set square [expr { $x ** 2 }] set square_root [expr { $x ** (1.0 / 2) }] set cube [expr { $x ** 3 }] set cube_root [expr { $x ** (1.0 / 3) }] 阶乘可

因为我是TCL的新手,所以需要一些帮助

需要写一个程序的阶乘,平方根,平方,立方和立方根的任何给定的数字(让它是10)。不使用钥匙,例如:sqrt


谢谢。

大多数操作都可以通过
**
操作员完成:

set x 7
set square [expr { $x ** 2 }]
set square_root [expr { $x ** (1.0 / 2) }]
set cube [expr { $x ** 3 }]
set cube_root [expr { $x ** (1.0 / 3) }]

阶乘可以在。

阶乘的递归实现中计算:

proc fac {n} {
    if { $n == 0 } {
        return 1
    } else {
        return [expr {$n*[fac [expr {$n-1}]]}]
    }
}
以及一个迭代版本:

proc fac {n} {
    set result 1
    for { set i 1 } { $i <= $n } { incr i } {
        set result [expr {$result * $i}]
    }
    return $result
}
proc fac{n}{
设定结果1

对于{set i 1}{$i,您希望不按键编写程序?(对于factorial,您希望增加的值有多大?)非常感谢您的帮助。谢谢。您也可以使用
pow
函数;
**
运算符只是一个包装器(当使用至少一个浮点参数调用时)。