Написать рекурсивную и нерекурсивную процедуры проверки наличия в списке заданного числа - Pascal
Формулировка задачи:
Условие:Написать рекурсивную и нерекурсивную процедуры проверки наличия в списке заданного числа.
Решение задачи: «Написать рекурсивную и нерекурсивную процедуры проверки наличия в списке заданного числа»
textual
Листинг программы
procedure SearchNum(pFirst:pNode; const aInf:integer;var bol:boolean); begin bol:=false; while pFirst<>nil do begin If pFirst^.Inf=aInf then begin bol:=true; exit; end; pFirst:=pFirst^.Next; end; end; procedure SearchNum1(pFirst:pNode; const aInf:integer;var bol:boolean); begin If pFirst=nil then bol:=false else If pFirst^.Inf=aInf then bol:=true else SearchNum1(pFirst^.Next,aInf,bol); end;
Объяснение кода листинга программы
- В обоих процедурах присутствует переменная
bol
, которая изначально устанавливается в значение false. Она будет использоваться для отслеживания наличия заданного числа в списке. - В первой процедуре
SearchNum
используется рекурсия. Она начинается с проверки, является ли первый элемент списка (переменнаяpFirst
) равным нулю. Если это так, то переменнаяbol
устанавливается в значение true, так как список пуст и заданное число не найдено. Затем выполняется цикл while, который продолжается до тех пор, покаpFirst
не станет равным нулю. Внутри цикла происходит проверка, равен ли элемент списка с инфом заданного числа. Если это так, то переменнаяbol
устанавливается в значение true, и цикл завершается. Если же условие не выполняется, тоpFirst
обновляется, чтобы указать на следующий элемент списка, и цикл продолжается. - Во второй процедуре
SearchNum1
используется нерекурсивный подход. Она начинается с проверки, является ли первый элемент списка (переменнаяpFirst
) равным нулю. Если это так, то переменнаяbol
устанавливается в значение false, так как список пуст и заданное число не найдено. Затем выполняется цикл while, который продолжается до тех пор, покаpFirst
не станет равным нулю. Внутри цикла происходит проверка, равен ли элемент списка с инфом заданного числа. Если это так, то переменнаяbol
устанавливается в значение true, и цикл завершается. Если же условие не выполняется, тоpFirst
обновляется, чтобы указать на следующий элемент списка, и цикл продолжается. Если же цикл завершается и переменнаяbol
остается равной false, то это означает, что заданное число не найдено в списке.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д