用Java创建Fibonacci代码

时间:2014-02-11 00:57:21

标签: java recursion compression fibonacci

我正努力让这段代码正常运行。目标是为值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;
  }
}

0 个答案:

没有答案