Я натолкнулся на упражнение Rustlings, которое продолжает меня беспокоить:
pub fn factorial(num: u64) -> u64 {
// Complete this function to return factorial of num
// Do not use:
// - return
// For extra fun don't use:
// - imperative style loops (for, while)
// - additional variables
// For the most fun don't use:
// - recursion
// Execute `rustlings hint iterators4` for hints.
}
Намек на решение говорит мне ...
На императивном языке вы можете написать для l oop для перебора умножения значений в переменную. Или вы можете написать код более функционально с помощью рекурсии и предложения соответствия. Но вы также можете использовать диапазоны и итераторы, чтобы решить эту проблему в ржавчине.
Я пробовал этот подход, но мне чего-то не хватает:
if num > 1 {
(2..=num).map(|n| n * ( n - 1 ) ??? ).???
} else {
1
}
Должен ли я использовать что-то вроде .take_while
вместо if
?