Написать программу, которая по заданному натуральному числу N определяет значение функции - Pascal

Узнай цену своей работы

Формулировка задачи:

Функция f(n) определена следующим образом: f(0)=0, f(1)=1, f(2n)=f(n), f(2n+1)=f(n)+f(n+1). Требуется написать программу, которая по заданному натуральному числу N определяет значение функции f(N). Помогите пожалуйста , не могу разобраться!

Решение задачи: «Написать программу, которая по заданному натуральному числу N определяет значение функции»

textual
Листинг программы
function f(i:integer):integer;
begin
if i = 0 then f:=0
else if i = 1 then f:=1
else if i mod 2 = 0 then f:=f(i div 2)
else f:=f(i div 2)+f(i div 2 + 1);
end;
var n:integer;
begin
Readln(n);
Writeln(f(n));
end.

Объяснение кода листинга программы

  1. Объявляется функция f с аргументом i типа integer, которая возвращает значение типа integer.
  2. Начинается блок выполнения функции f.
  3. Происходит проверка условия: если i равно 0, то функция возвращает 0.
  4. Иначе, если i равно 1, то функция возвращает 1.
  5. Иначе, если остаток от деления i на 2 равен 0, то функция вызывает сама себя с аргументом i деленным на 2 и возвращает результат.
  6. В противном случае, функция вызывает сама себя дважды: сначала с аргументом i деленным на 2, затем с аргументом i деленным на 2 плюс 1, и возвращает сумму результатов.
  7. Заканчивается блок выполнения функции f.
  8. Объявляется переменная n типа integer.
  9. Пользователю предлагается ввести значение для переменной n с помощью функции Readln.
  10. Выводится результат вызова функции f с аргументом n с помощью функции Writeln.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5
Похожие ответы