<em>Все нормальные люди делают это так:</em>
procedure F(n:integer); forward;
procedure G(n:integer); forward;
procedure F(n:integer);
begin
Writeln('Вызов F(',n,') - *');
//Write('*');
If n>10 then F(n-2) else G(n);
Writeln('Завершение F(',n,')')
end;
procedure G(n: integer) ;
begin
Writeln('Вызов G(',n,') - **');
//Write('**');
If n>1 then F(n-3);
Writeln('Завершение G(',n,')')
end;
begin
F(20)
end.
<u>Результат</u>
Вызов F(20) - *
Вызов F(18) - *
Вызов F(16) - *
Вызов F(14) - *
Вызов F(12) - *
Вызов F(10) - *
Вызов G(10) - **
Вызов F(7) - *
Вызов G(7) - **
Вызов F(4) - *
Вызов G(4) - **
Вызов F(1) - *
Вызов G(1) - **
Завершение G(1)
Завершение F(1)
Завершение G(4)
Завершение F(4)
Завершение G(7)
Завершение F(7)
Завершение G(10)
Завершение F(10)
Завершение F(12)
Завершение F(14)
Завершение F(16)
Завершение F(18)
Завершение F(20)
Считаем звездочки, их 17. Осталось оформить ответ, сделав вид, что это не программная выдача, а "я такой умный, на бумажке расписал".
А "ненормальные люди" и в самом деле делают это вручную, не понимая, что ручной разбор рекурсии такой длины - это глупость.
Т.е 3f в 10-ую, 8-ую
3f(в 16)=111111(в 2)= 77 (в 8) = 63 (в 10)
<em>// PascalABC.NET 3.3, сборка 1547 от 07.10.2017</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
begin
var n:=ReadInteger('n=');
var x:=ReadReal('x=');
Writeln(SeqGen(n,i->Power(x,2*i+1)/(2*i+1)).Sum)
end.
<u>Пример</u>
n= 9
x= 2.5
418654.338245567
//PascalABC.NET
//Версия 3.3, сборка 1611
begin
write(ReadSeqIntegerWhile(x->x<>0).Where(x->x.IsEven).Count());
end.