[英]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.