Вы также можете убрать необходимость в выражении else if, отделяя базовый случай от общего случая:
fun sumOdd 0 = 0
| sumOdd n = if n mod 2 = 0 then sumOdd(n-1)
else n + sumOdd(n-1)
Следует также отметить, что это решение (и ваше собственное) фактически не суммируетпервые N нечетных чисел.Он вычисляет сумму всех нечетных чисел, меньших, чем N.
sumOdd(5)
дает 9(5+3+1)
, когда он должен дать 25(1+3+5+7+9)
.