Calculator
bc 不支持對數和階乘計算?
有沒有其他支持計算的命令行
log
計算器n!
?至少bc
不能這樣做,它產生了一個解析錯誤。最好能在腳本中使用它,例如
echo '5!' | program
.
bc``-l
如果使用標誌呼叫,則支持自然對數。您可以使用它計算以 10 為底或以 2 為底的對數:$ bc -l ... l(100)/l(10) 2.00000000000000000000 l(256)/l(2) 8.00000000000000000007
我不認為有一個內置的階乘,但這很容易寫你自己:
$ bc ... define fact_rec (n) { if (n < 0) { print "oops"; halt; } if (n < 2) return 1; return n*fact_rec(n-1); } fact_rec(5) 120
要麼:
define fact_it (n) { if (n < 0) { print "oops"; halt; } res = 1; for (; n > 1; n--) { res *= n; } return res; } fact_it(100) 93326215443944152681699238856266700490715968264381621468592963895217\ 59999322991560894146397615651828625369792082722375825118521091686400\ 0000000000000000000000
要符合 POSIX,您需要編寫它:
define f(n) { auto s, m if (n <= 0) { "Invalid input: " n return(-1) } s = scale scale = 0 m = n / 1 scale = s if (n != m) { "Invalid input: " n return(-1) } if (n < 2) return(1) return(n * f(n - 1)) }
即:單字元函式名,no
halt
, 中需要括號return(x)
。如果您不需要輸入驗證(這裡是正整數),它只是:define f(n) { if (n < 2) return(1) return(n * f(n - 1)) }