Function func1(a As Double) As Double
Dim i As Integer, b As Double
i = 1 - Sgn((Abs(a) - a) / 2)
b = Sqr(a * i)
a = a * 2 + i * (b - 2 * a)
func1 = a
End Function
, Первоначально (после первого цикла): A = 0 1 2 ... 10
Посмотрим, что делает второй цикл.
Заметим, что переменная k здесь бесполезна - ей присваивают какие-то значения, а потом ничего с ними не делают. Тогда про неё можно забыть. Остаётся только одна команда: A[i] = A[10-i]
Для i = 0, 1, 2, 3, 4 она просто заменяет A[i] на значение, симметричное относительно центра A[5]; A[0]=10, A[1]=9; A[2]=8; A[3]=7; A[4]=6.
С i=5 не происходит ничего: присвоение имеет вид A[5]=A[5]
Для последующих i опять A[i] меняется на симметричное. Но после i=4 массив и так "симметричен", так что все эти команды ничего не делают.
A = [10, 9, 8, 7, 6, 5, 6, 7, 8, 9, 10]
Информацией,мыслями,впечатлениями
Дурацкая по своей трудоемкости задача, если делать её вручную.
А если написать полную программу и вставить туда счетчик вызовов F(n), то окажется, что для вызова F(6) процедура будет вызвана 97 раз. При каждом вызове выводится звездочка, поэтому их будет выведено тоже 97.
<em><u>Проверка выполнялась по следующей программе:</u></em>
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.