Hofstadter 的 G 序列在 Java 中重复出现
Hofstadter's G Sequence Recurrence in Java
我正在 Java 中使用递归构建 Hofstadter 的 G 序列,但它没有按预期工作。
Hofstadter G序列定义如下:
G(0)=0
G(n)= n-G(G(n-1)), n>0
这个序列的前几项是 0, 1, 1, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9, 10, 11, 11 , 12, 12, ...
我编写了以下目前无法使用的方法:
public static int G(int n) {
int i=0;
int result = 0;
if(n==0) return 0;
for (i = 1; i <= n; i++) {
result= i - G(G(i - 1));
System.out.println(result);
}
return result;
}
可以直接根据定义实现一个递归方法:
public static int G(int n){
return n == 0 ? 0 : n - G(G(n - 1));
}
要对此进行优化,您可以考虑使用记忆。
我正在 Java 中使用递归构建 Hofstadter 的 G 序列,但它没有按预期工作。
Hofstadter G序列定义如下:
G(0)=0
G(n)= n-G(G(n-1)), n>0
这个序列的前几项是 0, 1, 1, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9, 10, 11, 11 , 12, 12, ...
我编写了以下目前无法使用的方法:
public static int G(int n) {
int i=0;
int result = 0;
if(n==0) return 0;
for (i = 1; i <= n; i++) {
result= i - G(G(i - 1));
System.out.println(result);
}
return result;
}
可以直接根据定义实现一个递归方法:
public static int G(int n){
return n == 0 ? 0 : n - G(G(n - 1));
}
要对此进行优化,您可以考虑使用记忆。