Есть ответ 👍

Ниже записаны две рекурсивные функции (процедуры): f и g.сколько символов «звёздочка» будет напечатано на экране при выполнении вызова f(12)? procedure f(n: integer); begin writeln('*'); if n > 0 then begin writeln('*'); g(n - 1); end; end; procedure g(n: integer); begin writeln('*'); if n > 1 then begin writeln('*'); f(n - 2); end; end; можете подробно расписать

267
467
Посмотреть ответы 3

Ответы на вопрос:

timekid
4,8(67 оценок)

N=12 f  (12) печатает * *   вызывает g(11)   ** f(9) печатает     **     вызывает g(8) 8** f(6)   **     g(5)   ** f(3)   **     g(2) ** f(1) *     и идёт вызов g(0)   и n> 1 не выполняется и > выход итого 17 * ( в вашей программе ошибки, посмотрите мою)
Alterabars
4,4(85 оценок)

Для того, чтобы эта программа заработала надо добавить перед описанием процедуры f следующую строчку: procedure g(n: integer); forward; так как в процедуре f есть вызов процедуры g описанной дальше по тексту программы. после исправления кода и запуска программы с f(12) получим 17 звездочек. по шагам это будет выглядеть так:   вызов процедуры f и выполнение * n = 12 * n = 12 вызов процедуры g и выполнение * n = 11 * n = 11 вызов процедуры f и выполнение * n = 9 * n = 9 вызов процедуры g и выполнение * n = 8 * n = 8 вызов процедуры fи выполнение * n = 6 * n = 6 вызов процедуры g и выполнение * n = 5 * n = 5 вызов процедуры f и выполнение * n = 3 * n = 3 вызов процедуры g и выполнение * n = 2 * n = 2 вызов процедуры f и выполнение * n = 0
Jastmine42
4,5(33 оценок)

// pascalabc.net 3.2, сборка 1387 от 17.02.2017 // внимание! если программа не работает, обновите версию! function gcd(a,b: integer): integer; // нод begin   while b< > 0 do begin a: =a mod b; swap(a,b) end;   result: =a end; procedure redfrac(var a,b: integer); // сокращение дроби begin   var sgna: =sign(a); // мы должны учитывать знак!   var sgnb: =sign(b); // мы должны учитывать знак!   a: =abs(a); b: =abs(b);   var d: =gcd(a,b);   a: =(a div d)*sgna; b: =(b div d)*sgnb end; begin   var p,q: integer;   write('введите числитель и знаменатель: '); read(p,q);   redfrac(p,q);   writeln('результат: ',p,' ',q) end. пример введите числитель и знаменатель: -210 165 результат: -14 11

Популярно: Информатика