0

我有一个填充数组的方法,我需要找到一种方法让它重复多次。目的是迭代和重申行星的密度,以缩小其在同心壳特定点的质量、重力和密度。这是我的第一个程序,但是我认为在做这个的过程中我学到了很多东西。感谢大家

这是我的密度计算代码示例。我可能包括太多,但哦,好吧。所以我需要使这个迭代选定的次数。每次迭代都需要放回质量计算中,然后再放回重力计算中。然后节目又开始了。

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)))));

        }
    }
}
4

2 回答 2

1

这可以在Recursion或循环的帮助下实现。

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

这是一个递归示例:

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    
    }
}
于 2013-11-11T12:45:36.473 回答
0

您可以创建一个函数来检查您的计算公差是否已经足够好,这里有一些“伪代码”

 while(toleranceIsGood(planet) == false)
 {
      planet = calculatePlanet(planet);
 }

行星将是阵列。当然你可以实现诸如无尽循环检测等

于 2013-11-11T12:38:51.547 回答