![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
anonim |
![]()
Сообщение
#1
|
Гость ![]() |
ни кто не хочет алгорит поиска делением пополам преобразовать из простого в рекурсивный????буду очень благодарен
Код program dsfsdf; uses crt; type mas=array[1..10] of integer; var n,j:integer;a:mas; x:integer;i:integer; function dixotom(a:mas;x:integer;var i:integer):boolean; var l,r,m:integer; begin l:=1;r:=n; repeat m:=(l+r) div 2; if a[m]<x then l:=m+1 else r:=m-1; until (a[m]=x) or (l>r); dixotom:=a[m]=x;i:=m; end; begin clrscr; writeln('введите длину массива'); readln(n); for j:=1 to n do read(a[j]); writeln('введите элемент x'); readln(x); if dixotom(a,x,i)=true then writeln('элемент найден ',i) else writeln('не найден'); readkey; end. |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
А зачем тебе ИЗ ЭТОГО рекурсию делать? При больших размерах массива будут проблемы - стек не резиновый...
uses crt;
const
n = 10;
type
mas = array[1 .. n] of integer;
var
x: integer;
function dix(const a: mas; left, right: integer;
var i: integer): boolean;
var m: integer;
begin
dix := false; i := 0;
m := (left + right) div 2;
if (left > right) or (a[m] = x) then begin
dix := (a[m] = x);
i := m; exit;
end
else
if a[m] < x then dix := dix(a, m + 1, right, i)
else dix := dix(a, left, m - 1, i);
end;
var
i: integer;
const
a: mas = (
1, 3, 5, 6, 7, 9, 12, 15, 19, 24
);
begin
clrscr;
write('x = '); readln(x);
if dix(a, 1, n, i) then writeln('i = ', i)
else writeln('not found');
readkey;
end.
|
anonim |
![]()
Сообщение
#3
|
Гость ![]() |
Спасибо..блин я был почти близок....тока 1 косяк сделал....я не знаю зачем тут рекурсией.....помоему в быстроте выполнения не ахти какая разница..просто сказали сделать....
|
![]() ![]() |
![]() |
Текстовая версия | 3.08.2025 17:14 |