一道java编程题当n为多少时,下列公式s(n)与s(n+2)的值之间结果的差少于0.00001 s(n)=1/2!+1/4!+1/6!+1/8!.+1/n!

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/19 00:51:18
一道java编程题当n为多少时,下列公式s(n)与s(n+2)的值之间结果的差少于0.00001s(n)=1/2!+1/4!+1/6!+1/8!.+1/n!一道java编程题当n为多少时,下列公式s(

一道java编程题当n为多少时,下列公式s(n)与s(n+2)的值之间结果的差少于0.00001 s(n)=1/2!+1/4!+1/6!+1/8!.+1/n!
一道java编程题
当n为多少时,下列公式s(n)与s(n+2)的值之间结果的差少于0.00001 s(n)=1/2!+1/4!+1/6!+1/8!.+1/n!

一道java编程题当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}

一道java编程题当n为多少时,下列公式s(n)与s(n+2)的值之间结果的差少于0.00001 s(n)=1/2!+1/4!+1/6!+1/8!.+1/n! 一道VB编程题目.当n的值为25时,计算下列公式的值:s=1+1/1!+1/2!+1/3!+…+1/n!要求:按四舍五入的方式精确到小数点后第四位.#2.7183# java编程:用while循环实现计算当n为何值时,下列不等式成立.1+1/2+1/3+...+1/n》1 java 数 n的阶乘, 阶乘, 公式 为 n!=n*(n-1)(n-2)…*2 * 1 .求 数字 6的阶乘 的阶乘 .java编程 一道数学编程题N VB编程计算下列公式的值,其中n ( java编程题求解:使用for语句打印显示下列数字:1 121 12321 1234321 一道Java编程题构造一个n阶方阵,方阵的大小从键盘输入,方阵的最外一圈元素为1,以后往内依次为2,3,.n.例如:1 1 1 1 11 2 2 2 11 2 3 2 11 2 2 2 11 1 1 1 1 求解一道极限题已知:函数f(n)=(1)/(n * 2^n),n为整数.当n趋向无穷大时,f(1)+f(2)+……+f(n)=?最好用有关的极限公式 利用Java继承机制计算公式计算 式1:y = x + x/2 + x/3 + … + x/n;式2:y = x + x/2!+ x/3!+ … + x/n!;要求:①x为实数,n为正整数.②任意输入当n为奇数时,按照式1计算,当n为偶数时,按照式2计算.③利用继 一道java编程题:有一矩阵:a b c d e f g h i j k l m n o p q r 转变成:a g m b h n c i o d j p 若数列{a}的通项公式为a=(n+1)(9/10)^n (n是正整数),当a取最大值时,n=?这一道题中为什么要令a(n+1)-an=0 当直线条数为n时,把平面最多分成多少个部分?(公式) 一道高一有关摩擦力的物体题重力为100N的物体静止在水平面上,在下列情况下,物体所受的摩擦力为多少?是什么性质的摩擦力?(1)当用水平向右的10N力推物体时,物体不动(2)当用水平向右 编程输出下列图形,行数从键盘读入 当n=5时,* *** ***** *** *图形************* 是Pascal语言 关于一道Java练习题的疑问,希望能够得到解答 题目具体如下:为抵抗洪水,解放军战士连续作战89小时,编程计算共多少天零多少小时.我的想法是:89小时,要编程计算共多少天多少小时,因为1天 编程输出下列高度为n 的图形.结果格式:当n=6 时1 3 6 10 15 212 5 9 14 20 4 8 13 197 12 1811 1716 一道编程题 求算法思路.给出n(2