Ниже записаны две рекурсивные функции (процедуры): 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
Ответы на вопрос:
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 * ( в вашей программе ошибки, посмотрите мою)
Для того, чтобы эта программа заработала надо добавить перед описанием процедуры 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
// 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
Популярно: Информатика
-
letsplei121218.03.2022 14:20
-
NastyaDND14.04.2022 22:03
-
ВикаФан02.10.2020 09:53
-
Anna1370111.08.2021 19:15
-
Гелакси2705.06.2023 21:06
-
egyrt25.05.2023 11:44
-
ValeriaAstahova9903.05.2022 11:00
-
lorencz200216.10.2021 22:41
-
veta99113.05.2020 09:08
-
GloomyCat23109.11.2020 11:10