2016-10-13 7 views
0

Я новичок в OZ Mozart, я пытаюсь написать треугольную последовательность, но программирование не будет работать.Синтаксическая ошибка, неожиданный T_end, ожидающий T_the

declare 
fun {Sequence N R} 
    fun {Help I} 
     if I < N 
    sum = {Int.toFloat(N*(N+1)/2.0)} 
    %I + 1 
    case R of nil then {Append [sum] nil} 
    [] H|T then sum|H|T 
    end 
    I+1 
     end 
    end 
in 
    {Help 0} 
end 

declare 
{Browse {Sequence 5 nil}} 

Если у меня что-то не так с моим программированием? Это показывает ошибки, как:

%*************************** parse error ************************ 
%** 
%** syntax error, unexpected T_end, expecting T_then 
%** 
%** in file "c:/Users/admin/Desktop/test (2).oz", line 11, column 6 
%** ------------------ rejected (1 error) 

Любая идея о том, что? Спасибо

ответ

0

Если я хорошо понял, что такое треугольная последовательность, то followinf является простой реализацией. Но прежде всего ваша ошибка означает, что вам нужно использовать ключевое слово then в заявлении if. Преобразование типа из float в int не обязательно, поскольку каждое число, умноженное на его преемника, дает нечетное число. Это упрощает управление переменными. Вот что я предлагаю:

declare 

fun {Sequence N} 
    local X in 
    if N>0 then 
     X = (N*(N+1) div 2) 
     X|{Sequence N-1} 
    else nil 
    end 
    end 
end 

{Browse {Sequence 5}} 

Это просто пример, он дает треугольную последовательность в обратном порядке, вы можете легко исправить его по вашему желанию.

 Смежные вопросы

  • Нет связанных вопросов^_^