Я пытаюсь написать функцию типа:треугольника Паскаля в SML
pascal : int * int -> int
где пара Интса представляет строку и столбец, соответственно, треугольник Паскаля.
Вот моя попытка:
fun pascal(i : int, j : int) : int =
if (i = 0 andalso j = 0) orelse i = j orelse i = 0
then 1
else
pascal(i - 1, j - 1) + pascal(i - 1, j);
Он работает для моих базовых случаев, но дает мне странный вывод иначе. Например:
pascal(4, 2)
дает мне 11 и pascal(4, 1)
дает мне 15
Это немного странно, потому что, до тех пор, как если пункт терпит неудачу и еще получает оценку, я хочу, чтобы вернуть сумму элемента одной строка выше и один элемент вверху и один элемент слева.
Что я делаю неправильно?
Вам не нужно писать «Спасибо» или подписать с вашим именем, так как оно автоматически появляется в правом нижнем углу вашего сообщения. – Jubobs