มีเครื่องคิดเลขคำสั่งอื่น ๆ สายที่สนับสนุนlog
, n!
การคำนวณ? อย่างน้อยbc
ก็ไม่สามารถทำเช่นนั้นได้
จะดีที่สุดถ้าฉันสามารถใช้สคริปต์เช่น echo '5!' | program
มีเครื่องคิดเลขคำสั่งอื่น ๆ สายที่สนับสนุน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))
}
นั่นคือ: ตัวเดียวชื่อฟังก์ชันไม่มีprint
ไม่มีวงเล็บที่จำเป็นในการhalt
return(x)
หากคุณไม่ต้องการการตรวจสอบความถูกต้องของอินพุต (นี่คือตัวเลขจำนวนเต็มบวก) เพียง:
define f(n) {
if (n < 2) return(1)
return(n * f(n - 1))
}
0!=1
1!=1
อย่างน้อยนั่นคือสิ่งที่ wikipedia พูด
Orpieเป็นเครื่องคิดเลขสำหรับเครื่องคิดเลขและคำสั่ง geeks บรรทัด มันจำลองเครื่องคิดเลข HP RPN ที่ทันสมัยซึ่งเป็นวิธีเดียวที่แท้จริงในการคำนวณ
หากคุณเป็นคนนอกรีตเครื่องคิดเลขยกมาจาก TIs, Casios และมีบทเรียนRPN มากมาย ออนไลน์ที่คุณสามารถเริ่มการศึกษาใหม่ได้ คู่มือ Orpieในที่สุดจะมีประโยชน์กับคุณเมื่อคุณได้รับวิธีคิด RPN
เพื่อคำนวณ 5! ใน Orpie 5 !เพียงพิมพ์ได้ตามที่คุณต้องการเขียน: คุณสามารถกดEnterระหว่างสองอันเพื่อกด5
ลงบนสแต็กก่อนได้ แต่ไม่จำเป็น
ในการคำนวณล็อก10 (5) ให้พิมพ์5 Enter ' l o Enterชนิด คุณต้องกด5
ลงบนสแต็กก่อนในกรณีนี้เนื่องจากการกดแป้นถัดไปไม่ใช่ตัวดำเนินการ อักขระเครื่องหมายคำพูดเดี่ยวนั้นเข้าสู่โหมดตัวย่อของคำสั่งซึ่งช่วยให้คุณเริ่มพิมพ์log10
ซึ่งคุณสามารถระบุด้วยอักขระสองตัวแรกเท่านั้น ( l
เพียงอย่างเดียวทำให้คุณได้รับฟังก์ชั่นบันทึกธรรมชาติln
แทน)
เช่นเดียวกับเครื่องคิดเลข RPN ใด ๆ ที่คุณจะได้รับมันได้อย่างรวดเร็วด้วย Orpie กับบิตของการปฏิบัติ
Orpie อยู่ใน repos ของ Ubuntu FreeBSD math/orpie
รวมไว้ในพอร์ตเป็น บน OS X คุณสามารถติดตั้งผ่าน Homebrew อาจมีแพ็คเกจของบุคคลที่สามสำหรับ OS อื่น ๆ การสร้างจากแหล่งที่มาอาจเป็นเรื่องน่าเบื่อเนื่องจากเขียนในOCamlและคุณอาจไม่ได้ติดตั้งสภาพแวดล้อมการพัฒนา OCaml ไว้ แม้ว่าการติดตั้งครั้งเดียวจะไม่ยากอย่างยิ่ง
มี GNU เสมอ Octaveเครื่องคิดเลขบรรทัดคำสั่ง (สำหรับเมื่อคุณต้องการสภาพแวดล้อมการพัฒนาที่สมบูรณ์และภาษาการเขียนโปรแกรมในเครื่องคิดเลขของคุณและโปรแกรมเสริมเพิ่มเติมนับพัน)
หรือ Rถ้าสถิติของคุณมากกว่าสิ่งที่คุณ
ฉันส่วนใหญ่ใช้bc -l
เพื่อโหลดไลบรารีคณิตศาสตร์มาตรฐานเท่านั้น ... ฉันยังมีbc
นามแฝงbc -l
อยู่ ดูคำตอบของ Mat สำหรับข้อมูลเกี่ยวกับการกำหนดฟังก์ชันแฟกทอเรียล .... แม้ว่าbc
หน้า man จะกำหนดเป็น:
define f (x) {
if (x <= 1) return (1);
return (f(x-1) * x);
}
การตรวจสอบ <= 1 แทน == 1 จะป้องกันการวนซ้ำไม่รู้จบหากคุณป้อนข้อมูลเป็นจำนวนลบ (ควรเป็นข้อผิดพลาด) หรือเป็นศูนย์ (ถูกต้อง)
W-Calc
ที่ฉันชอบคือมีน้ำหนักเบาง่าย
http://w-calc.sourceforge.net
คุณไม่ต้องมองหาคู่มือทั่วไปหรือสร้างฟังก์ชั่นทั่วไปขึ้นมาใหม่เหมือนที่คุณทำด้วยตนเองbc
- คำสั่งส่วนใหญ่เป็นสิ่งที่คุณคาดหวังดังนั้นเพียงพิมพ์สิ่งที่คุณต้องการและใช้งานได้ การทดสอบตามคำถามของคุณ - แน่นอนlog()
& n!
ทำงานตามที่คาดไว้
(เป็นที่ยอมรับฉันไม่เคยได้ยิน Orpie - ดีมากอาจเป็นตัวเลือกที่ดีกว่า)
เกินความจริงโดยสิ้นเชิง แต่ล่ามภาษาการเขียนโปรแกรมเป็นเครื่องคิดเลขบรรทัดคำสั่งหลังจากทั้งหมด:
$ echo 5 | python -c 'import sys; import math; print math.factorial(int(sys.stdin.readline()));'
120
หากคุณมีพอร์ต Mac:
$ sudo /opt/local/bin/port install orpie