Это рекурсивный вызов процедуры. при первом вызове f(7) по условию if n> 1 then будет вызов этой же процедуры f(n div 2); или f(3), далее, т.к. 3> 1, то снова будет вызвана процедура f(3 div 2) или f(1), теперь не выполняется условие n> 1, следовательно, будет выполнен оператор write ('**'); - напечатаются две звездочки, после выхода из процедуры продолжится выполнение процедуры при втором вызове - будут напечатаны еще 2 звездочки, затем продолжится выполнение при первом вызове - еще будут напечатаны 2 звездочки. в результате вызова f(7) будут напечатаны 6 звездочек ******.
masha812
08.12.2020
//прога на pascal`e const n = 10; var a: array of shortint; i, min, sumcount: shortint; sum: integer; begin randomize; setlength (a, n); writeln ('исходный массив: '); for i: =0 to n-1 do begin a[i]: =random (101)-50; write (a[i], '; '); if a[i] in [10..15] then begin inc (sum, a[i]); inc (sumcount); end; if a[i]< a[min] then min: =i; end; if min< > (n-1) then begin a[min]: =a[min]+a[n-1]; a[n-1]: =a[min]-a[n-1]; a[min]: =a[min]-a[n-1]; end; writeln (); if sumcount> 0 then writeln ('ca чисел в промежутке [10..15]: ', sum/sumcount) else writeln ('нет чисел в промежутке [10..15]'); writeln ('удален элемент a[', min+1, '] = ', a[n-1], '; измененный массив: '); setlength (a, n-1); for i: =0 to n-2 do write (a[i], '; '); end.
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Дана строка s. замените все группы стоящих рядом точек многоточием.