exercism/zig/collatz-conjecture/collatz_conjecture.zig
2024-07-28 17:45:02 -04:00

20 lines
482 B
Zig

// Please implement the `ComputationError.IllegalArgument` error.
pub const ComputationError = error{IllegalArgument};
pub fn steps(number: usize) anyerror!usize {
if (number == 0) {
return ComputationError.IllegalArgument;
}
return collatz(number, 0);
}
fn collatz(number: usize, acc: usize) usize {
if (number == 1) {
return acc;
}
const next = if (number % 2 == 0) number / 2 else number * 3 + 1;
return collatz(next, acc + 1);
}