Я должен написать рекурсивную функцию, которая вычисляет произведение цифр числа.Я записал следующее:
let rec produsul_cifrelor x = if x = 0 then 0 else let n = x mod 10 in n * produsul_cifrelor (x/10)
Проблема в том, что он всегда возвращает мне 0. Я уверен, что что-то упускаю, но не могу выяснить.Можете ли вы помочь мне решить проблему?Код должен вычислять произведение цифр числа, например, если я введу 12345, он должен вернуть 1 * 2 * 3 * 4 * 5, что равно 120.
ОБНОВЛЕНИЕ
Я изменил код на это:
let rec produsul_cifrelor x = match x with | 0 -> 0
| 1 -> 1
| 2 -> 2
| 3 -> 3
| 4 -> 4
| 5 -> 5
| 6 -> 6
| 7 -> 7
| 8 -> 8
| 9 -> 9
| _ -> (x mod 10) * produsul_cifrelor (x/10)
Сейчас это работает, но у меня другой вопрос: есть ли более эффективный способ сделать это?