произведение строки - PullRequest
       3

произведение строки

0 голосов
/ 06 июля 2011

Мне нужна функция, которая возвращает произведение чисел в строке:

SomeFunc("1234") -> 1 * 2 * 3 * 4 = 24

Вот мой код:

lists:foldr(fun(X, Y) -> X * Y end, 1, "1234").

Но я получаю 6497400.

Почему и как я могу исправить код?

1 Ответ

6 голосов
/ 06 июля 2011

Ваш код умножает коды символов ascii, то есть 49 * 50 * 51 * 52. Чтобы получить желаемый результат, используйте

lists:foldr(fun(X, Y) -> (X-$0)*Y end, 1, "1234")

, где $0 - это код ASCII для символа '0'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...