Факториал в Unix shell
Пример для версий
Bash 3.0,
Bash 3.2.39,
Bash 4.0.35,
Bash 4.1.5,
mksh R40
Пример, работающий в версиях Unix shell, не поддерживающих синтаксис for i in {0..16}
или ((i = 0; i <= 16; i++))
: цикл for
конструируется “вручную”.
В mksh используются 32-битовые целые числа, так что для факториалов чисел больше 13 в этой реализации происходит переполнение.
function factorial {
typeset -i n=$1
if [ $n = 0 ]; then
echo 1
return
fi
echo $(( n * $(factorial $(( n - 1 )) ) ))
}
i=0
while [[ $i -le 16 ]]
do
echo "$i! = $(factorial $i)"
((i++))
done
Комментарии
]]>blog comments powered by Disqus
]]>