Факториал в ОАМ

У меня есть некоторый код OAM здесь, и я просмотрел все инструкции, что они делают, как они действуют, и я переписал все это псевдо, но у меня проблема с поиском (так что я могу сосчитать, сколько) петли есть в программе. Я чувствую, что это должно смотреть мне в глаза, и я сделал тысячу факторных программ на C/Java и т. Д., Но я не могу видеть это здесь.

альтернативный текст

Таким образом, он принимает пользовательскую запись, если == 0, он прерывается на done [brz], если> 0 break, чтобы пропустить [brp] neg, используемый для отмены значения для значения abs

Процедура Skip выполняет умножение и decrememnts, за которым следуют дополнительные условия, чтобы увидеть, нужно ли ее вызывать снова или программа завершена.

По сути, мне нужно найти петли в этой программе. Как я уже сказал, это, вероятно, смотрит мне в лицо, но это свободно задаваемый вопрос со стороны цессионария..

РЕДАКТИРОВАТЬ, чтобы уточнить: программа не берет факториал одного числа, а умножает факториал каждого введенного числа.

Таким образом, я мог бы поставить 3, -4, 2, 0, и результат будет 288. (3*2*1)(4*3*2*1)(2*1)

РЕДАКТИРОВАТЬ для BRI:

read: noop
      lda stdin
      brp return
      neg

return: bri read

1 ответ

Решение

Ну, это не просто факториал.. Это будет версия C:

    int result = 1, value;
    while(value = get_int()) {
next_loop:
        value = abs(c);
        do {
skip_loop:
            result *= value;
            value--;
        } while (value > 0);
    };
    printf("%d\n", result);

Так что это произведение факториалов, и есть ровно две петли.

Другие вопросы по тегам