log
計算をサポートする他のコマンドライン電卓はありますかn!
?少なくともbc
そのようには機能しないため、解析エラーが発生します。
好ましくは、スクリプトで使用できますecho '5!' | program
。
ベストアンサー1
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 print
、no にはhalt
括弧が必要ですreturn(x)
。入力検証が必要ない場合(ここでは正の整数)、次の手順を実行してください。
define f(n) {
if (n < 2) return(1)
return(n * f(n - 1))
}