一道java编程题当n为多少时,下列公式s(n)与s(n+2)的值之间结果的差少于0.00001 s(n)=1/2!+1
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/21 10:09:18
一道java编程题
当n为多少时,下列公式s(n)与s(n+2)的值之间结果的差少于0.00001 s(n)=1/2!+1/4!+1/6!+1/8!.+1/n!
当n为多少时,下列公式s(n)与s(n+2)的值之间结果的差少于0.00001 s(n)=1/2!+1/4!+1/6!+1/8!.+1/n!
用两个map存储中间计算的过程数据,可以提高执行效率import java.util.HashMap;
import java.util.Map;
public class $ {
private static Map<Long, Long> jiechengMap = new HashMap<Long, Long>();
private static Map<Long, Double> snMap = new HashMap<Long, Double>();
public static void main(String[] args) {
int i = 2;
double lastValue = 0;
double result;
while (true) {
result = getResult(i);
if (result - lastValue <= 0.00001) {
System.out.println("差少于0.00001是的N是:" + i);
System.out.println(jiechengMap);
System.out.println(snMap);
return;
} else {
i += 2;
lastValue = result;
}
}
}
private static double getResult(long num) {
if (num <= 0) {
snMap.put(0L, 0D);
return 0;
}
Double tmp = snMap.get(num);
if (tmp != null) {
return tmp;
}
long jiecheng = getJiecheng(num);
tmp = getResult(num - 2) + 1.0 / jiecheng;
snMap.put(num, tmp);
return tmp;
}
private static long getJiecheng(long num) {
Long result = jiechengMap.get(num);
if (result != null) {
return result;
}
if (num <= 1) {
jiechengMap.put(num, 1L);
return 1L;
}
result = getJiecheng(num - 1) * num;
jiechengMap.put(num, result);
return result;
}
}差少于0.00001是的N是:10
{1=1, 2=2, 3=6, 4=24, 5=120, 6=720, 7=5040, 8=40320, 9=362880, 10=3628800}
{0=0.0, 2=0.5, 4=0.5416666666666666, 6=0.5430555555555555, 8=0.5430803571428571, 10=0.5430806327160493}
import java.util.Map;
public class $ {
private static Map<Long, Long> jiechengMap = new HashMap<Long, Long>();
private static Map<Long, Double> snMap = new HashMap<Long, Double>();
public static void main(String[] args) {
int i = 2;
double lastValue = 0;
double result;
while (true) {
result = getResult(i);
if (result - lastValue <= 0.00001) {
System.out.println("差少于0.00001是的N是:" + i);
System.out.println(jiechengMap);
System.out.println(snMap);
return;
} else {
i += 2;
lastValue = result;
}
}
}
private static double getResult(long num) {
if (num <= 0) {
snMap.put(0L, 0D);
return 0;
}
Double tmp = snMap.get(num);
if (tmp != null) {
return tmp;
}
long jiecheng = getJiecheng(num);
tmp = getResult(num - 2) + 1.0 / jiecheng;
snMap.put(num, tmp);
return tmp;
}
private static long getJiecheng(long num) {
Long result = jiechengMap.get(num);
if (result != null) {
return result;
}
if (num <= 1) {
jiechengMap.put(num, 1L);
return 1L;
}
result = getJiecheng(num - 1) * num;
jiechengMap.put(num, result);
return result;
}
}差少于0.00001是的N是:10
{1=1, 2=2, 3=6, 4=24, 5=120, 6=720, 7=5040, 8=40320, 9=362880, 10=3628800}
{0=0.0, 2=0.5, 4=0.5416666666666666, 6=0.5430555555555555, 8=0.5430803571428571, 10=0.5430806327160493}
一道java编程题当n为多少时,下列公式s(n)与s(n+2)的值之间结果的差少于0.00001 s(n)=1/2!+1
一道VB编程题目.当n的值为25时,计算下列公式的值:s=1+1/1!+1/2!+1/3!+…+1/n!要求:按四舍五入
一道规律题“n=1,s=1 n=2,s=5 n=3,s=14 n=4,s=30.求n与s之间的函数解析式”各位大哥大姐拜
数列的通项a(n)的前几项和S(n)之间满足S(n)=2-3a(n)求 a(n)与a(n-1)、s(n)与s(n-1)的
JAVA编程:已知:s=1-1/2+1/3-1/4+…+1/(n-1)-1/n,编写程序求解n=100时的S值.(用JA
用java编写一个程序s=1*2*3*.*n,求s>=1000的最小n的值
用Java编程 :输入一个正整数n,输出n!的值.其中n!=1*2*3*…*n.
A(n)=2S(n-1)+2,求A(n)的通项公式
数列{a(n)}的前n项和为S(n),a(1)=1,a(n+1)=2S(n)(∈正整数N).求数列{a(n)}的通项公式
n(n+1)/2为通项公式 求和S
数列Αn的前n项和为S,A1=1,S(n+1)=2S(n)+3n+1 证明(An+3)为等比数列
数学证明题:若等差数列的项数为2n-1(n∈N+),则S奇/S偶=n/(n-1).