一个对象,它有一个父对象和一个动作,每个父对象都有一个父对象和一个动作

an object where it has a parent and an action and each parent has a parent and an action

如何在 Java

中执行此操作
public class State implements Comparable<State> {
    //other attbs;
    State parent;
    String actionFromParent;
// other code
}

其中 x 是 State 类型的对象,每个父对象本身都有来自父对象的操作。我想这样做直到我有 actionFromParent == null.

不知有多少家长。我用它来打印 A* 算法的路径。在x(state currentnode)满足目标后,我一直在打印路径,我打印了它的子节点的所有actionfromparents。

System.out.println(x.actionFromParent);
System.out.println(x.parent.actionFromParent);
System.out.println(x.parent.parent.actionFromParent);
System.out.println(x.parent.parent.parent.actionFromParent);
.....
until  (x.parent.parent.parent.....parent.actionFromParent == null)

这就是你想要的:

while(x.parent.actionFromParent != null){
    System.out.println(x.actionFromParent);
    System.out.println(x.parent.actionFromParent);
    x = x.parent;
}

您可以使用 while 循环或递归函数。

使用 while 循环:

State x = theState;
while (x != null && x.actionFromParent != null) {
    System.out.println(x.actionFromParent);
    x = x.parent;
}

用递归函数:

public static void printActionsFromParent(State x) {
    if (x != null && x.actionFromParent != null) {
        System.out.println(x.actionFromParent);
        printActionsFromParent(x.parent);
    }
}