У меня есть следующий код:
fn hailSeq(number: i32) -> Vec<i32> {
let mut vec = Vec::new();
vec.push(number);
if number == 1 {
vec.push(1);
return vec;
}
if number % 2 == 0 {
let num = number / 2;
vec.push(num);
hailSeq(num);
} else {
let num = 3 * number + 1;
vec.push(num);
hailSeq(num);
}
return vec;
}
Он вычисляет последовательность Hailstone и останавливается на 1. Выход должен выглядеть следующим образом для hailSeq(11)
:
[11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]
Однако мой вывод выглядит так:
[11, 34]
Я не совсем уверен, почему это происходит. Возможно, в Rust есть предел рекурсии, о котором я не знаю, но я уверен, что в моем коде, вероятно, просто ошибка.