The value e^x can be approximated by the sum:1+x+x^2/2!+x^3/3!+......+x^n/n!Write a program that takes a value x as input and outputs this sum for n taken to be each of the values 1 to 10,50,and 100. Your program should repeat the calculation for new values of x until the user says she or he is through. The expression n! is called the factorial of n and is defined asN!=1*2*3*.....*nUse variables of type double to store the factorials (or arrange your calculation toavoid any direct calculation of factorials); otherwise, you are likely to produce inte-geroverflow, that is , integers larger than Java allows.煩請高手代為解答
2006-06-01 18:22:58 · 3 個解答 · 發問者 23歲九局下半 4 in 電腦與網際網路 ➔ 程式設計
首先重謄一下題目 The value e^x can be approximated by the sum: 1+x+x^2/2!+x^3/3!+......+x^n/n! Write a program that takes a value x as input and outputs this sum for n taken to be each of the values 1 to 10,50,and 100. Your program should repeat the calculation for new values of x until the user says she or he is through. The expression n! is called the factorial of n and is defined as N!=1*2*3*.....*n Use variables of type double to store the factorials (or arrange your calculation to avoid any direct calculation of factorials); otherwise, you are likely to produce integer overflow, that is , integers larger than Java allows. e^x 的值約等於 1+x+x^2/2!+x^3/3!+......+x^n/n!。 實作一個程式,利用使用者輸入 x 之值,印出當 n = 1 到 10、n = 50 以及 n = 100 時上述算式之值。在使用者確定結束前,你的程式必須能繼續用新的 x 值計算結果。 請用 double 型態來儲存階乘(或調整你的程式來避免直接計算任何階乘),否則你很有可能會造成整數超載,也就是大於 Java 所能允許的最大整數。以下是我的解法,僅供參考import java.io.*;public class ExponentialFunction { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); boolean again = true; while (again) { System.out.println(); System.out.print("Please input x: "); double x = Double.parseDouble(br.readLine()); double[] es = new double[10]; // 儲存 n = 1 到 10 的結果 es[0] = 1 + x; double ef50 = 1 + x; // n = 50 的結果 double ef100 = 1 + x; // n = 100 的結果 double d = x; for (int i = 1; i < 100; i++) { d *= x / (i+1); if (i < 10) es[i] = es[i-1] + d; if (i < 50) ef50 += d; ef100 += d; } // 列印結果 System.out.println(); System.out.println("Exponential function of value " + x + " is as followed:"); for (int i = 0; i < 10; i++) { System.out.println(" Limited to sum a sequence of length " + (i+1) + ": " + es[i]); } System.out.println(" Limited to sum a sequence of length 50: " + ef50); System.out.println(" Limited to sum a sequence of length 100: " + ef100); System.out.println(); System.out.print("Do you want to continue? (y/n) : "); String line = br.readLine(); if (line.equals("n")) { again = !again; } } }}
2006-06-02 08:14:54 · answer #1 · answered by ? 7 · 0⤊ 0⤋
這題不需要高手吧...
2006-06-02 06:40:39 · answer #2 · answered by Kevin 3 · 0⤊ 0⤋
意思是
價值 e︿x 能被總數接近:
1+ x +x︿ 2/2!+x︿ 3/3!+......+x︿ n/n!
寫一個拿價值 x 的計畫當輸入和輸出這一總數對於被拿是的 n
每價值 1 到 10,50,和 100. 你的計畫應該重複計算
對於 x 的新價值直到使用者說她或者他穿越。 表達 n! 是
呼叫了了 n 的階乘而且被定義當做
N!=1*2*3*.....*n
使用類型加倍的變數儲存階乘(或者安排你的計算到
避免任何的指示階乘的計算); 否則,你可能生產 inte-
geroverflow,也就是說,整數比較大的比較爪哇允許。
2006-06-01 18:49:36 · answer #3 · answered by ? 1 · 0⤊ 0⤋