Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使一个方法重复自身?JAVA_Java_Loops_Methods_Iteration - Fatal编程技术网

如何使一个方法重复自身?JAVA

如何使一个方法重复自身?JAVA,java,loops,methods,iteration,Java,Loops,Methods,Iteration,我有一个填充数组的方法,我需要找到一种方法使它重复多次。其目的是迭代和重申行星的密度,以缩小其质量、重力和密度在特定点(同心壳)的范围。这是我的第一个项目,但我认为,在这方面的工作中,我学到了相当多的东西。谢谢大家 这是我的密度计算代码示例。我可能写得太多了,但哦,好吧。因此,我需要选择迭代次数。每次迭代都需要重新进行质量计算,然后再重新进行重力计算。然后节目又开始了 public class ItrDensityGrid { public double itrrho[]; d

我有一个填充数组的方法,我需要找到一种方法使它重复多次。其目的是迭代和重申行星的密度,以缩小其质量、重力和密度在特定点(同心壳)的范围。这是我的第一个项目,但我认为,在这方面的工作中,我学到了相当多的东西。谢谢大家

这是我的密度计算代码示例。我可能写得太多了,但哦,好吧。因此,我需要选择迭代次数。每次迭代都需要重新进行质量计算,然后再重新进行重力计算。然后节目又开始了

public class ItrDensityGrid {

    public double itrrho[];
    double b = InitialConditions.bmod;  

    // Iterating grid of densities 

    public ItrDensityGrid(int shells, double radius, double mass){

            GravityGrid gg = new GravityGrid(shells, radius, mass); 

            for(int k = shells; k >= 0; k--){

                    itrrho[k] = (itrrho[k]*(1+(gg.alpha[k]*(1.0 / 2)))*(1 / (1-((gg.alpha[k])*(1.0 / 2)))));

        }
    }
}

你可以做一个函数来检查你的计算的容差是否已经足够好了,这里有一些“伪代码”


行星就是阵列。当然,您可以实现无止境循环检测等功能,这可以借助于或循环来实现

在递归中,从方法本身内部再次调用该方法。确保有条件地调用(或返回),否则可能导致无限循环

下面是一个递归的例子:

public planetMars (double density, double mass) {

    // do your calculations 
    density = density / 10.05312;
    mass = mass / 7.2378;
    myArray[] = density; // or whatever you want        

    // if calculations have not narrowed enough, call recursively
    if ( density > 5.2)
        planetMars (density, mass);
}
或者,使用loop,您可以执行以下操作:

public planetMars (double density, double mass) {

    // loop unless the calculation is not cool
    while ( density > 5.2) {
        // do your calculations 
        density = density / 10.05312;
        mass = mass / 7.2378;
        myArray[] = density; // or whatever you want    
    }
}

可以在任何条件块中调用该方法,也可以在条件中调用该方法本身。如果您可以提供该方法当前执行的操作的代码示例,那将是最好的。如果您还可以提供一些示例代码,那将是非常棒的。这样人们可以更准确地回答。从简单的描述,他们只能猜测一个解决方案。尝试谷歌如何做递归,你可能需要递归调用该方法。
public planetMars (double density, double mass) {

    // loop unless the calculation is not cool
    while ( density > 5.2) {
        // do your calculations 
        density = density / 10.05312;
        mass = mass / 7.2378;
        myArray[] = density; // or whatever you want    
    }
}