作者: JO3EMC
日時: 2009/5/07(21:16)
#for版(Tclでは一番シンプル?)
for {set n 10; set fn 1} {$n > 1} {incr n -1} {puts [set fn [expr $fn*$n]]}


#exprを無理矢理w減らした再帰関数版
proc fact {n} {
  if {[incr n -1] < 1} then {return 1}
  return [expr ($n+1)*[fact $n]]
}
puts [fact 10]

#for+join版(前半がおデブちゃんですが…)
for {set n 10} {$n > 1} {incr n -1} {puts [lappend list $n]}
puts [expr [join $list *]]


JO3EMCこといさなこと岩橋といいます。お世話になってます。
専らTclユーザーです。ぼんやりしてる間に後塵を拝してしまいましたw。
素人プログラムなのであんまりスマートなの出てきませんが、せっかくなので投稿。

---
岩橋 伴典
CALL SIGN:JO3EMC
E-mail:jo3emc@...

>TclTk
>
>■ループ版
>% while {$x > 1} {
>set y [expr $y * $x]
>incr x -1}
>% puts $y
>3628800
>%
>コメント:exprと$が面倒だが、基本的にシンプルなループ
>
>
>■再帰版
>% proc fact {x} {
>if { $x > 1} { return [expr $x * [fact [expr $x - 1]]]
>} else { return 1}}
>% fact 10
>3628800
>%
>
>コメント:なんとかもう少し、exprを省略して書く方法は無いのだろうか
>
>/機械伯爵/私ではコレが限界です……/