亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java中的分數系列

java中的分數系列

qq_遁去的一_1 2024-01-05 14:44:09
我需要使用循環來查找以下系列的總和:(2/3)-(4/5)+(6/7)-(8/9)+......±n我必須僅在該程序中使用 for 循環。參考代碼看看我做了什么:import java.util.Scanner;public class P64 {    public static void main(String args[]) {        Scanner sc=new Scanner(System.in);        System.out.println("Enter the limit");        double n=sc.nextDouble();        double sum=0;        for(double i=1;i<=n;i++) {            if(i%2==0)            sum=sum-(++i/i++);            else            sum=sum+(++i/i++);        }            System.out.println(sum);    }}我已經嘗試過,但輸出不是 1 就是 0。
查看完整描述

4 回答

?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

您應該使用單獨的變量作為值,就像在循環中使用相同的變量一樣,您的系列會讓它變得復雜,所以,試試這個:


public static void main(String[] args){

    Scanner sc=new Scanner(System.in);

    System.out.println("Enter the limit");

    double n=sc.nextDouble();

    double sum=0;

    double j=1;

    for(double i=1;i<=n;i++)

    {

        if(i%2==0)

            sum=sum-(++j/++j);

        else

            sum=sum+(++j/++j);

    }

    System.out.println(sum);

}

Input: 4

Output: -0.16507936507936516


查看完整回答
反對 回復 2024-01-05
?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

我刪除了預增量/后增量的技巧,并讓限制決定了相加的項數。


import java.util.Scanner;

public class P64

{

    public static void main(String args[])

    {

        Scanner sc=new Scanner(System.in);

        System.out.println("Enter the limit");

        double n=sc.nextDouble();

        double sum=0;

        for(double i=1;i<=n;i++)

        {

            double delta = (2*i)/(2*i+1);

            if(i%2==0)

                sum -= delta;

            else

                sum += delta;

        }

        System.out.println(sum);

    }

}


查看完整回答
反對 回復 2024-01-05
?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

我將使用一個變量進行交替+-,并在每次迭代時采取兩步:


public static void main(String args[]) {

    Scanner sc = new Scanner(System.in);

    System.out.println("Enter the limit");

    double n = sc.nextDouble();

    double sum = 0;

    int sign = 1;

    for (double i = 2; i <= n; i = i+2 ) {

        sum = sum + (sign * (i/(i+1)));

        sign = -sign;

    }

    System.out.println(sum);

}


查看完整回答
反對 回復 2024-01-05
?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

我認為越簡單越好。


將其封裝在函數中可以使您的代碼更易于在主方法之外進行測試和使用。


/**

 * @link https://stackoverflow.com/questions/58606895/series-with-fractions-in-java

 */

public class P64 {


    public static void main(String[] args) {

        int n = (args.length > 0) ? Integer.parseInt(args[0]) : 10;

        System.out.println(String.format("n: %5d sum: %10.5f", n, series(n)));

    }


    static double series(int n) {

        int sign = 1;

        double sum = 0.0;

        for (int i = 1; i <= n; ++i) {

            double x = 2.0*i;

            double term = sign*x/(x+1.0);

            sum += term;

            sign *= -1;

        }

        return sum;

    }

}


查看完整回答
反對 回復 2024-01-05
  • 4 回答
  • 0 關注
  • 210 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號