Recur11. Описать рекурсивную функцию MaxInt($$A$$, $$N$$) целого типа, которая находит максимальный элемент целочисленного массива $$A$$ размера $$N$$ $$(1 \le N \le 10)$$, не используя оператор цикла. С помощью этой функции найти максимальные элементы массивов $$A$$, $$B$$, $$C$$ размера $$N_A$$, $$N_B$$, $$N_C$$ соответственно.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
program Recur11; type ar = array[1..10]of integer; var NA,NB,NC:integer; A,B,C:ar; Function MaxInt(A:ar;N:integer):integer; begin if N<2 then MaxInt:=A[N] else if A[N]>MaxInt(A,N-1) then MaxInt:=A[N] else MaxInt:=MaxInt(A,N-1); end; Procedure InputArray(var A:ar;N:integer); var i:integer; begin for i:=1 to N do begin Write(i,': '); Readln(A[i]); end; end; begin Write('NA: '); Readln(NA); InputArray(A,NA); Writeln(MaxInt(A,NA)); Write('NB: '); Readln(NB); InputArray(B,NB); Writeln(MaxInt(B,NB)); Write('NC: '); Readln(NC); InputArray(C,NC); Writeln(MaxInt(C,NC)); end. |
Другие задачи из раздела Recur можно посмотреть здесь.
День добрый. Ваша программа выводит индексы максимальных элементов, а не сами элементы, как должно быть. Может, например, вместо Writeln(MaxInt(A,NA)); стоит написать Writeln(A[MaxInt(A,NA)]); ?
Согласен, что не правильно работает…
поменял функцию:
на
Согласно условию.