0

我想用 L 系统使用递归在 java 中计算龙曲线直到 n = 10。例如,

Replace all F characters with F-H
Replace all H characters with F+H

dragon(0) = F-H (this is the input)
dragon(1) = F-H-F+H
dragon(2) = F-H-F+H-F-H+F+H
...
dragon(10) = ?

如何使用递归在 java 中完成相同的任务?我只对了解递归方法感兴趣。

4

1 回答 1

0

在递归方法中,这种“替换”问题陈述通常可以实现为递归调用。

因此,让我们创建两个函数 -当达到所需的曲线深度或需要进一步扩展时,它们中F()H()每一个都会返回。"F""H"F(...) + "-" + H(...)F(...) + "+" + H(...)

private String F(int depth) {
  if (depth == 0) {
    return "F";
  } else {
    return F(depth - 1) + "-" + H(depth - 1);
  }
}

private String H(int depth) {
  if (depth == 0) {
    return "H";
  } else {
    return F(depth - 1) + "+" + H(depth - 1);
  }
}

public String dragon(int depth) {
  return F(depth + 1);
}

在线尝试!

于 2019-10-17T21:58:45.913 回答