Напишите рекурсивную процедуру - Prolog
Формулировка задачи:
Напишите рекурсивную процедуру
Решение задачи: «Напишите рекурсивную процедуру»
textual
Листинг программы
run:- write('Введите n: '), read(N), nl, prov(N). prov(N):- N>0, strannost(N,Rez), write('Rez: '), write(Rez). prov(N):- N<0, write('Введённое число меньше нуля!'). strannost(N,Rez):- N=:=1, Rez is 1. strannost(N,Rez):- Ch is N mod 2, Ch=:=0, N1 is N/2, strannost(N1,Rez). strannost(N,Rez):- Ch is N mod 2, Ch\=0, N1 is (3*N+1)/2, strannost(N1,Rez).
Объяснение кода листинга программы
- Ввод числа n с помощью функции read, выводим сообщение с просьбой ввести число n.
- Если n больше 0, то вызываем функцию strannost с аргументами n и rez, значение rez равно 1.
- Если n меньше 0, то выводим сообщение, что введённое число меньше нуля!
- В функции strannost проверяем, равно ли n единице, если да, то rez равно 1.
- Если n не равно единице, то находим остаток от деления n на 2 и сохраняем его в переменной Ch.
- Если Ch равно нулю, то n чётное, делим n на 2 и вызываем функцию strannost с аргументами (n/2) и rez.
- Если Ch не равно нулю, то n нечётное, прибавляем 3 к n и делим полученное число на 2, затем вызываем функцию strannost с аргументами ( (3*n+1)/2 ) и rez.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д