CS153/hw6/hw4programs/sp22_tests/collatz.oat

34 lines
629 B
Text
Raw Normal View History

bool isEven(int x) {
if (divide(x, 2) * 2 == x) {
return true;
} else {
return false;
}
}
int divide (int a, int b) {
if (b == 0) {
return 0;
}
var result = 0;
while (a > 0) {
a = a - b;
result = result + 1;
}
return result;
}
int helper(int x, int count) {
if (x == 1) {
return count;
} else if (isEven(x)) {
return helper(divide(x, 2), count + 1);
} else {
return helper(3 * x + 1, count + 1);
}
}
int collatz(int x) {
return helper(x, 0);
}
int program(int argc, string[] argv) {
return collatz(12);
}