• Вычислить произведение четырех натур.чисел, используя только операцию сложения. (Язык пр:pascal)
    1) Написать программу (обычную)
    2) Написать программу с использованием процедуры
    3) Написать программу с исп. функции
    4) Написать программу с исп. рекурсивной процедуры
    5) Написать программу с исп. рекурсивной функции

Ответы 4

  • Не допер, к сожалению, я пока не проходил tmp и inc и не понимаю их значения. Если можно, напиши самую обычную программу, кажется она пишется через цикл
  • tmp - просто имя переменной, процедура inc(x,y) увеличивает значение x на y, т.е. если не происходит переполнения, то же самое что и x+=y; x shr 1 - побитовый сдвиг, для положительных чисел возвращает то же самое, что и x div 2.
  • Произведение вычисляется аналогично схеме Горнера(точного названия в программировании не знаю): m*(2n+1)=2*(m*n)+m; m*(2n)=2*(m*n), само произведение m*n вычисляется по тому же принципу и такой спуск идет до тех пор пока очередное n не станет равно 1. Красиво...
    • Автор:

      edgar40
    • 6 лет назад
    • 0
  • function pr(a, b:integer):integer;   var tmp:integer;begin     if b = 1 then pr := a     else     begin          tmp := pr(a, b shr 1);          inc(tmp, tmp);          if b and 1 = 1 then inc(tmp, a);          pr := tmp;     end;end; рекурсивная ф-ия, алгоритм работает гораздо быстрее лобового складывания (хоть с большими числами). Процедура пишется аналогично. (если не допрешь - скажи, сделаю)
    • Автор:

      dollyekwf
    • 6 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years