RosettaCodeData/Task/Fusc-sequence/Vala/fusc-sequence.vala

27 lines
663 B
Vala

int fusc(int n) {
if (n == 0 || n == 1)
return n;
else if (n % 2 == 0)
return fusc(n / 2);
else
return fusc((n - 1) / 2) + fusc((n + 1) / 2);
}
void main() {
print("The first 61 fusc numbers:\n");
for (int i = 0; i < 61; i++)
print(@"$(fusc(i)) ");
print("\n\nThe fusc numbers whose lengths are greater than those of previous fusc numbers:\n");
print(" n fusc(n)\n");
print("-------------------\n");
var max_length = 0;
for (int i = 0; i < 700000; i++) {
var f = fusc(i);
var length = f.to_string().length;
if (length > max_length) {
max_length = length;
print("%9d %9d\n", i, f);
}
}
}