Привет, я новичок в методологии функционального программирования в Scala.Я хочу ввести число в свою функцию и проверить, является ли оно хорошим числом или нет.Число является хорошим числом, если каждая его цифра больше, чем сумма цифр, которые находятся справа от этой цифры.Например: 9620 подходит как (2> 0, 6> 2 + 0, 9> 6 + 2 + 0) шагов, которые я использую, чтобы решить это
1. converting a number to string and reversing it
2. storing all digits of the reversed number as elements of a list
3. applying for loop from i equals 1 to length of number - 1
4. calculating sum of first i digits as num2
5. extracting ith digit from the list as digit1 which is one digit ahead of the first i numbers for which we calculated sum because list starts from zero.
6. comparing output of 4th and 5th step. if num1 is greater than num2 then we will break the for loop and come out of the loop to print it is not a good number.
, пожалуйста, найдите мой код ниже
val num1 = 9521.toString.reverse
val list1 = num1.map(_.todigit).toList
for (i <- 1 to num1.length - 1) {
val num2 = num1.take(i).map(_.toDigits) sum
val digit1 = list1(i)
if (num2 > digit1) {
print("number is not a good number")
break
}
}
Я знаю, что это не самый оптимизированный способ решения этой проблемы.Также я ищу способ закодировать это, используя хвостовую рекурсию, где я пропускаю два числа и получаю все хорошие числа, попадающие между этими двумя числами.Можно ли сделать это более оптимизированным способом?Заранее спасибо!