Câu trả lời:
bc
hỗ trợ logarit tự nhiên nếu được gọi bằng -l
cờ. Bạn có thể tính toán nhật ký cơ sở 10 hoặc cơ sở 2 với nó:
$ bc -l
...
l(100)/l(10)
2.00000000000000000000
l(256)/l(2)
8.00000000000000000007
Tôi không nghĩ rằng có một giai thừa tích hợp, nhưng điều đó đủ dễ để tự viết:
$ 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
Hoặc là:
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
Để tuân thủ POSIX, bạn cần viết nó:
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))
}
Đó là: tên hàm ký tự đơn, không print
, không halt
, dấu ngoặc đơn cần có trong return(x)
. Nếu bạn không cần xác thực đầu vào (ở đây cho các số nguyên dương), thì đó chỉ là:
define f(n) {
if (n < 2) return(1)
return(n * f(n - 1))
}
0!=1
, giống như 1!=1
. Ít nhất, đó là những gì wikipedia nói.
Orpie là các máy tính cho máy tính và dòng lệnh geeks. Nó mô phỏng một máy tính HP RPN hiện đại, tất nhiên là cách duy nhất để tính toán.
Nếu bạn là một người nghiện máy tính, lớn lên trên TI, Casios, và như vậy, có rất nhiều hướng dẫn RPN trực tuyến mà bạn có thể bắt đầu giáo dục lại. Hướng dẫn sử dụng Orpie cuối cùng sẽ có ích cho bạn, một khi bạn có được cách suy nghĩ RPN.
Để tính 5! trong Orpie, chỉ cần gõ nó khi bạn viết nó : 5 !. Bạn có thể nhấn Entergiữa chúng để đẩy 5
lên ngăn xếp trước, nhưng không cần thiết.
Để tính log 10 (5), gõ 5 Enter ' l o Enter. Bạn phải đẩy 5
ngăn xếp lên trước trong trường hợp này, vì tổ hợp phím tiếp theo không phải là toán tử. Ký tự trích dẫn đơn đó vào chế độ viết tắt lệnh, cho phép bạn bắt đầu nhập log10
, bạn có thể nhận dạng duy nhất chỉ với hai ký tự đầu tiên. ( l
một mình giúp bạn có chức năng đăng nhập tự nhiên, ln
thay vào đó.)
Như với bất kỳ máy tính RPN nào, bạn có thể thực sự nhanh chóng với Orpie, với một chút luyện tập.
Orpie là trong kho Ubuntu repos. FreeBSD bao gồm nó trong Cổng, như math/orpie
. Trên OS X, bạn có thể cài đặt nó thông qua Homebrew . Gói bên thứ ba có thể có sẵn cho các hệ điều hành khác. Xây dựng từ nguồn có thể là một chút việc vặt, vì nó được viết bằng OCaml và có lẽ bạn không cài đặt môi trường phát triển OCaml. Mặc dù vậy, việc thiết lập một thiết lập không quá khó.
Luôn có GNU Octave , emacs của máy tính dòng lệnh (khi bạn muốn có một môi trường phát triển hoàn chỉnh và ngôn ngữ lập trình được tích hợp sẵn trong máy tính của bạn và hàng ngàn tiện ích bổ sung tùy chọn)
hoặc R nếu số liệu thống kê là nhiều thứ của bạn.
Tôi chủ yếu chỉ sử dụng bc -l
để tải thư viện toán học tiêu chuẩn ... Tôi thậm chí còn có bc
bí danh bc -l
. Xem câu trả lời của Mat để biết thông tin về cách xác định hàm giai thừa .... mặc dù bc
trang man định nghĩa nó là:
define f (x) {
if (x <= 1) return (1);
return (f(x-1) * x);
}
Việc kiểm tra <= 1 thay vì == 1 sẽ ngăn chặn một vòng lặp vô tận nếu bạn tình cờ cung cấp cho nó một số âm (nên là một lỗi) hoặc bằng không (hợp lệ).
Yêu thích của tôi là nhẹ, đơn giản W-Calc
.
http://w-calc.sourceforge.net
Bạn không cần phải tìm trong hướng dẫn hoặc tạo lại thủ công các chức năng phổ biến, giống như bạn làm với bc
- các lệnh chủ yếu là chính xác những gì bạn mong đợi, vì vậy chỉ cần nhập những gì bạn muốn và nó chỉ hoạt động. Kiểm tra theo câu hỏi của bạn - thực sự log()
& n!
làm việc như mong đợi.
(Phải thừa nhận rằng tôi chưa nghe nói về Orpie - rất có thể là một lựa chọn tốt hơn.)
Nếu bạn có Cổng Mac:
$ sudo /opt/local/bin/port install orpie