Написать программу, которая по заданному натуральному числу 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.
Объяснение кода листинга программы
- Объявляется функция
f
с аргументомi
типаinteger
, которая возвращает значение типаinteger
. - Начинается блок выполнения функции
f
. - Происходит проверка условия: если
i
равно 0, то функция возвращает 0. - Иначе, если
i
равно 1, то функция возвращает 1. - Иначе, если остаток от деления
i
на 2 равен 0, то функция вызывает сама себя с аргументомi
деленным на 2 и возвращает результат. - В противном случае, функция вызывает сама себя дважды: сначала с аргументом
i
деленным на 2, затем с аргументомi
деленным на 2 плюс 1, и возвращает сумму результатов. - Заканчивается блок выполнения функции
f
. - Объявляется переменная
n
типаinteger
. - Пользователю предлагается ввести значение для переменной
n
с помощью функцииReadln
. - Выводится результат вызова функции
f
с аргументомn
с помощью функцииWriteln
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д