繁体   English   中英

Java程序中的递归需要重复最后一个数字

[英]Recursion in Java program needs to repeat last number

我想要做的是让程序运行第一组数字。 然后使用输出为“X”。 所以它看起来像Tnew = Told - m(Told - Tair)Told是最后的方程式Tnew。

ex. new = old +6
old = 7
new = 13
new = 13 +6
repeat 

继承人的代码; 包装热量损失;

/**
 *
 * @author Eric Franzen
 */
public class HeatLoss {

    public static void heatloss(double x, double m, double a) {
        double heatloss = x - m * (x - a);

        if (x < 55) {
            System.out.println("potatoe too cold");
        }
        else {

            System.out.println(heatloss);
            heatloss(x,m,a);
            x = heatloss;
        }
    }


    public static void main(String[] args) {

        heatloss(80, .01515 ,25); 

    }  

}

好的,所以我将代码更改为如下所示:

public static double heatloss(double x, double m, double a) {
    double heatloss = x - m * (x - a);

    if (x < 55) {
        System.out.println("potatoe too cold");
        return heatloss;
    }
    else {
        System.out.println(heatloss);
        x = heatloss(x,m,a);
        return heatloss;
    }
}

但我得到一个错误

x = heatloss(x,m,a);

“从未使用过分配值”。 我不确定这意味着什么? X清楚地用在程序中。

为了一次调用递归方法来访问另一个内部的数据(例如,存储在局部变量中的数据),您需要以某种方式将第二次递归调用中的数据传递到第一次。 在这种情况下,您可能需要考虑让heatloss方法返回heatloss局部变量的值。 例如:

public static double heatloss(double x, double m, double a) {
    double heatloss = x - m * (x - a);

    if (x < 55) {
        System.out.println("potatoe too cold");
        return /* put something here */
    }
    else {
        System.out.println(heatloss);
        x = heatloss(x,m,a);
        return /* put something here */
    }
}

通过填写适当的空格(我不知道你在这里怎么做,因为我不熟悉你正在解决的特定问题),你应该能够将更深入的调用信息传达给更高级的电话。

希望这可以帮助!

/**
 *
 * @author Eric Franzen
 */
public class HeatLoss {

    public static void heatloss(double x, double m, double a) {
        double heatloss = x - m * (x - a);

        if (x < 55) {
            System.out.println("potatoe too cold");
        }
        else {

            System.out.println(heatloss);
            x = heatloss;
            heatloss(x,m,a);
        }
    }


    public static void main(String[] args) {

        heatloss(80, .01515 ,25); 

    }  
}
        heatloss(x,m,a);
        x = heatloss;

你犯了一个错误,认为heatloss的方法和heatloss的变量是以某种方式相关的。 他们是完全无关的。 heatloss方法返回其值时,您必须将返回的值赋给某些东西(如果您确实打算使用该值)。

你应该“玩电脑”,然后用铅笔和纸张逐步完成运行程序时可能发生的操作。 这将使您更好地了解正在发生的事情。 这不是魔术 - 它只是一种简单的“命令式”语言,其中每一步都使用之前(及时)步骤中发生的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM