Написать программу, которая по заданному натуральному числу 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
Листинг программы
  1. function f(i:integer):integer;
  2. begin
  3. if i = 0 then f:=0
  4. else if i = 1 then f:=1
  5. else if i mod 2 = 0 then f:=f(i div 2)
  6. else f:=f(i div 2)+f(i div 2 + 1);
  7. end;
  8. var n:integer;
  9. begin
  10. Readln(n);
  11. Writeln(f(n));
  12. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы