Сумма цифр натурального числа N - Prolog

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

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

Привет всем. Помогите решить задачу на прологе. Определите предикат p(+N,–R), вычисляющий сумму цифр натурального числа N. Вот как это можно сделать на Паскале (в задании есть этот код):
Листинг программы
  1. function sumDigits(a:integer):integer;
  2. {вычисляет сумму цифр числа a}
  3. var m,b:integer;
  4. begin
  5. m:=0;
  6. repeat
  7. b:=a mod 10;
  8. m:=m+b;
  9. a:=a div 10;
  10. until a=0;
  11. sunDigits:=m
  12. end;
Заранее спасибо за помощь.

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

textual
Листинг программы
  1. predicates
  2. sum_dig(integer,integer)
  3.  
  4. clauses
  5. sum_dig(N,N) :- N>=0, N<10.
  6. sum_dig(N,K) :- N>=10,V=N div 10, P=N mod 10, sum_dig(V,U), K=P+U.

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

Код выполняет следующие действия:

  1. Проверяет, является ли число N натуральным (N>=0 && N<10).
  2. Если число N натуральное, то возвращается само число N.
  3. Если число N больше или равно 10, то число N делится на 10 (V=N div 10) и остаток от деления записывается в переменную P.
  4. Рекурсивно вызывается процедура sum_dig для числа V и U.
  5. К результату рекурсивного вызова добавляется значение переменной P.
  6. Результат вычисления K (сумма цифр числа N) возвращается из функции.

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


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

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

6   голосов , оценка 3.833 из 5

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

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

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