М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
anishenkovayana
anishenkovayana
11.01.2022 04:42 •  Информатика

рекурсивная функция F. Begin
Write (n div 3);
If n div 3 > 2 then
Begin
F(n-3);
F(n-5);
End;
End.
Что выведет программа при вызове F(14)? В ответе запишите последовательность выведенных цифр слитно (без пробелов).

👇
Ответ:
nekrasska
nekrasska
11.01.2022

4322321

Объяснение:

Функция перестанет вызывать саму себя, когда выражение n div 3 > 2 будет ложным, то есть при n ≤ 8. При рекурсии функции вызываются последовательно: как только видим первую функцию, пишем новую строку, расписывая результат вызова, и вновь делаем то же самое. Однако для экономии места и времени можно раскрывать функции в строке сразу, ведь от этого порядок вывода чисел не изменится.

F(14) = 4F(11)F(9) = 43F(8)F(6)3F(6)F(4)=4322321

4,8(75 оценок)
Открыть все ответы
Ответ:
Чискейк
Чискейк
11.01.2022
Const maxn=15;
var a: array[1..maxn] of integer;
    skv,prod,gr,i: integer;
begin
  writeln('введите ',maxn,' чисел');
  skv:=0;  prod:=1;
  gr:=0;
  for i:=1 to maxn do
  begin
    write(i,': ');  readln(a[i]);
    if a[i]<0 then skv:=skv+a[i]*a[i];
    if (a[i] mod 2 = 0) and (i mod 2 = 0) then
       prod:=prod*a[i];
    if abs(a[i])>100 then gr:=gr+1;
  end;
  writeln('сумма квадратов отрицательных:  ',skv);
  writeln('произведение четных на четных местах:  ',prod);
  writeln('больше 100 по модулю:  ',gr);
end.

введите 15 чисел
1: 151
2: -231
3: 104
4: 19
5: 36
6: -112
7: 5
8: 8
9: 11
10: 13
11: 45
12: 5
13: 6
14: 17
15: 19
сумма квадратов отрицательных:  65905
произведение четных на четных местах:  -896
больше 100 по модулю:  4
4,7(47 оценок)
Ответ:
SovaZ
SovaZ
11.01.2022
На каждом шаге имеет смысл менять два горшка с разными цветами. Поэтому всё получится, если роз, стоящих на чётных местах, будет столько же, сколько и фиалок на нечётных. При этом если тех и других k, то всего нужно k перестановок.
Код (PascalABC.NET 3.2):
begin
  var n := ReadInteger();
  var roses := new integer[n];
  var count_roses := 0;
  var violets := new integer[n];
  var count_violets := 0;
  for var i := 1 to n do
  begin
    if ReadInteger() = i mod 2 then
      if i mod 2 = 0 then
      begin
        roses[count_roses] := i;
        inc(count_roses);
      end
      else
      begin
        violets[count_violets] := i;
        inc(count_violets);
      end;
  end;
  if count_roses = count_violets then
  begin
    writeln(count_roses);
    for var i := 0 to count_roses - 1 do
      println(roses[i], violets[i]);
  end
  else
    write(-1)
end.
4,7(12 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ