计算正整数的阶乘

・1 分钟阅读

 $ fac() { (echo 1; seq $1) | paste -s -d* | bc; }

说明

这个函数定义了一个叫fac的shell函数,它计算一个正整数的阶乘,一旦定义了(你可以把它放在你的.bashrc里),你可以使用以下方法:

 
$ fac 10
3628800

 

让我们把函数分解一下,假设我们首先要计算4的阶乘,echo 1的阶乘,以便0的阶乘正确地工作(因为seq 0不输出任何内容),然后,seq用于生成一个数字列表:


$ (echo 1; seq 4)
1
1
2
3
4

然后,使用paste将这些数字放在一行中,并将* (乘法)作为分隔符:


$ (echo 1; seq 4) | paste -s -d*
1*1*2*3*4


$ (echo 1; seq 4) | paste -s -d* | bc
24

实际函数使用$1,以便我们可以使用fac计算任何正整数的阶乘。

Hujiuxiang profile image