Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Задачи, которые можно решить как частный случай обобщенной




 

Если нельзя извлечь рекурсию из постановки задачи, то можно расширить задачу, обобщить ее (например, введя дополнительный параметр). Удачное обобщение может помочь увидеть рекурсию. После этого возвра­щаемся к частному случаю и решаем исходную задачу.

Пример

Определить, является ли заданное натуральное чис­ло простым.

Решение

Данную задачу можно обобщить, например, так; оп­ределить, верно ли, что заданное натуральное число N не делится ни на одно число, большее или равное M (2≤M≤N), но меньшее N.

Соответствующая функция должна принимать зна­чение "истина" в двух случаях:

Если M=N;

Если N не делится на M и функция принимает значение "истина" для чисел М+1 и N.

ProgramExample_80;

Function Simple(M,N: Integer): Boolean;

Begin

If M=N Then Simple:=True

Else Simple:=(N Mod M<>0)

And Simple (M+1,N);

End;

Вернемся к исходной задаче. Она является частным случаем обобщенной, если M положить равным 2. Пер­вое обращение к функции будет таким: Simple(2,N), где N − это данное число.

Задание

Изучить работу функции в пошаговом режиме и нарисовать схему вызовов функций.

Задачи, в которых можно

 использовать характеристику или свойство функции

Пример

Для заданного натурального числа N≥1 определить натуральное число a, для которого выполняется нера­венство: 2a-1≤N≤2a.

Решение

Заметим, что значение a зависит от N следующим образом:

1, если N=1;

a(N)=

a(N div 2)+1, если N>1.

 

Рассмотрим пример. Пусть N=34.

2a-1≤34<2a, прибавим 1 и переходим к 34 div 2

2a-1≤17<2a +1

2a-1≤8<2a +1

2a-1≤4<2a      +1

2a-1≤2<2a +1

2a-1≤1<2a получим a=1

А теперь возвращаемся назад, к последней единице прибавляем все предыдущие. Таким образом, получается 6. Опишем соответствующую функцию:

ProgramExample_81;

Function A(n: Integer): Integer;

Begin

If N=1 Then A:=1

Else A:=A(N div 2)+1;

End;

ФАЙЛОВЫЙ ТИП ДАННЫХ










Последнее изменение этой страницы: 2018-05-31; просмотров: 264.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...