将数字数组传递给递归 Java 程序

我正在编写一个显示 m(i) 的程序,i = 1,2,3,4,5,107,1060。结果应该是双精度值。而系列是 m(i) = 1/2 + 2/3 +.....i/i+1


我正在尝试使用数组传递所需的数字。但是我遇到了兼容性问题。到目前为止,我有这个:


public class Recursive {

    public static void main(String[] args){

        int[] s;

        s = new int[]{1,2,3,4,5,107,1060};


        System.out.println(""   ,m(s));

    }


    public static double m(int i){

        double result;

        if(i > 1){

            result = i/(i + 1) + m(i - 1);

        } else{

            result = i/(i + 1);

        }

        return result;

    }

}


繁花不似锦
浏览 103回答 3
3回答

米琪卡哇伊

根据您收到的评论,大多数人认为您的问题是:public class Recursive {    public static double m(int i) {        double result = i / (i + 1.0);        if (i > 1) {            result += m(i - 1);        }        return result;    }    public static void main(String[] args) {        int[] s = {1, 2, 3, 4, 5, 107, 1060};        for (int i : s) {             System.out.println("m(" + i + ") = " + m(i));        }    }}因为顺序应该是 1/2 + 2/3 + 3/4 + 4/5+ 5/6 + 107/108+ 1060/1061这阐明了您确实在要求:public class Recursive {    public static double m(int i, int[] s) {        double result = s[i] / (s[i] + 1.0);        if (i > 0) {            result += m(i - 1, s);        }        return result;    }    public static void main(String[] args) {        int[] s = {1, 2, 3, 4, 5, 107, 1060};        System.out.println(m(s.length - 1, s));    }}哪个有效,除非s是一个空数组——就像你的问题的其他潜在答案一样。

慕妹3146593

首先,您需要将数组作为参数传递给方法m(),或者您可以在类级别声明数组以避免递归开销。对于这个小数组,让我们采用第一种方法。然后,m()你在内心犯了一个必须纠正的逻辑错误。你需要 sums[i]/s[i] + 1而不是i / (i + 1)。还有if语句 from i > 1to中的条件,i > 0因为数组的索引是0基于的:public static void main(String[] args){    int[] s = new int[]{1, 2, 3, 4, 5, 107, 1060};    System.out.println(m(s, 6));}public static double m(int[] s, int i){    double result;    if(i > 0){        result = 1.0 * s[i]/(s[i] + 1) + m(s, i - 1);    } else{        result = 1.0 * s[i]/(s[i] + 1);    }    return result;}需要相乘的因子1.0来避免整数除法:s[i]/(s[i] + 1) 这总是会导致0

手掌心

该方法m()需要一个参数,int但您正在传递整个数组。保留一个 for 循环并传递m()for 每个元素或处理m()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java