我正努力让这段代码正常运行。目标是为值0-127创建斐波纳契代码,以便稍后在用于压缩文本文件的程序中使用。
实施例
0:1
1:11
2:011
3:0011
4:1011
5:00011
6:10011
表示{1,2,3,5,8,13 ...},最后加1,以便在特定字符完成时清楚显示。
任何帮助都会受到赞赏,我已经玩了一段时间,现在试图让它工作,所以如果有什么不明确的问题。
如果你有一个更好的算法来解决这种情况,那么如果你能引导我朝着正确的方向前进,那将会很棒。
public static void makeFibCodes (String[] fibCodes) {
int[] fibSeq = {1,2,3,5,8,13,21,34,55,89,144};
String s = "1";
for (int i = 1; i <= 127; i++) {
s = "1";
s = makeFibRec(fibSeq, i, s, false, 9);
fibCodes[i] = s;
System.out.println(s);
}
}
public static String makeFibRec (int[] fibSeq, int i, String s, boolean hasValue, int fibI) {
if (i == 0) {
hasValue = true;
return "0" + s ;
} else if (i == 1) {
hasValue = true;
return "1" + s;
} else {
for (int j = fibI; j > 0; j--) {
if (i > fibSeq[j]) {
hasValue = true;
s = "1" + s;
i = i - fibSeq[j];
return makeFibRec(fibSeq, i, s, hasValue, j) + s;
} if (hasValue) {
s = "0" + s;
}
}
return s;
}
}