public static String sequence(int target) { if (target == 0) return "0"; int valat1 = Fib.findLowestValAt1(target); String ret = "0 " + valat1 + " "; if (target == valat1) return ret.trim(); int valat0 = 0; int current = valat0 + valat1; do { ret += current + " "; valat0 = valat1; valat1 = current; current = valat0 + valat1; } while (current <= target); return ret.trim(); }
public static String sequence(BigInteger target) { if (target.compareTo(new BigInteger("2147483647")) < 0) return sequence(target.intValue()); // this actually does need to be handled as a big integer BigInteger valat1 = Fib.findLowestValAt1(target); String ret = "0 " + valat1 + " "; if (target.equals(valat1)) return ret.trim(); BigInteger valat0 = BigInteger.ZERO; BigInteger current = valat0.add(valat1); do { ret += current + " "; valat0 = valat1; valat1 = current; current = valat0.add(valat1); } while (current.compareTo(target) <= 0); return ret.trim(); }