Задать вопрос
25 сентября, 23:24

Дан рекурсивный алгоритм:

procedure F (n: integer) ;

begin

writeln ('*') ;

if n > 0 then begin

F (n-3) ;

F (n-2) ;

F (n div 2) ;

F (n div 2) ;

end

end;

Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F (6) ?

+1
Ответы (1)
  1. 26 сентября, 01:58
    0
    Дурацкая по своей трудоемкости задача, если делать её вручную.

    А если написать полную программу и вставить туда счетчик вызовов F (n), то окажется, что для вызова F (6) процедура будет вызвана 97 раз. При каждом вызове выводится звездочка, поэтому их будет выведено тоже 97.

    Проверка выполнялась по следующей программе:

    var

    k:integer;

    procedure F (n: integer) ;

    begin

    writeln ('*') ;

    k:=k+1;

    if n > 0 then begin

    F (n - 3) ;

    F (n - 2) ;

    F (n div 2) ;

    F (n div 2) ;

    end

    end;

    begin

    k:=0;

    F (6) ;

    Writeln (k)

    end.
Знаете ответ?
Сомневаетесь в ответе?
Найдите правильный ответ на вопрос ✅ «Дан рекурсивный алгоритм: procedure F (n: integer) ; begin writeln ('*') ; if n > 0 then begin F (n-3) ; F (n-2) ; F (n div 2) ; F (n div ...» по предмету 📘 Информатика, а если вы сомневаетесь в правильности ответов или ответ отсутствует, то попробуйте воспользоваться умным поиском на сайте и найти ответы на похожие вопросы.
Смотреть другие ответы
Похожие вопросы по информатике
3. Дан рекурсивный алгоритм: procedure F (n: integer) ; begin writeln ('*') ; if n > 0 then begin writeln ('*') ; F (n-2) ; F (n-2) ; F (n div 2) ; end end; Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F (6) ?
Ответы (1)
Сделать так чтобы Writeln был заменен другим словом и повторялься не больше двух раз program choise; var N_M:integer; writeln (' введи номер месяца ') ; readln (N_M) ; case N_M of 1:writeln (' январь ') ; 2:writeln (' февраль ') ;
Ответы (1)
Укажите области видимости в программе: Program P; Var x: integer; Procedure P1; Var y: integer; Begin P2; End; Procedure P2; Var z: integer; Begin {Тело процедуры} End; Procedure P3; Var m: integer; Begin P1; End; Begin {Тело основной программы}P3;
Ответы (1)
Как сделать теперь без массива (паскале) ? var nm:array of integer; j, l:integer; begin nm: = new integer[3] (random (20), random (20), random (20)) ; writeln ('nm[0] = ', nm[0]) ; writeln ('nm[1] = ', nm[1]) ; writeln ('nm[2] = ', nm[2]) ;
Ответы (1)
Ниже записан рекурсивный алгоритм F. Чему равна сумма напечатанных на экране чисел при выполнении вызова F (10) ? procedure F (n: integer) ; begin if n > 2 then begin writeln (n) ; F (n - 3) ; F (n - 4) end end;
Ответы (1)