Посчитать количество слагаемых в сумме

      Комментарии к записи Посчитать количество слагаемых в сумме отключены

Главная Форумы Программирование Помощь с решением задач на Prolog Общие вопросы Посчитать количество слагаемых в сумме

В этой теме 1 ответ, 2 участника, последнее обновление  Васильев Владимир Сергеевич 2 года/лет, 7 мес. назад.

  • Автор
    Сообщения
  • #1823

    questioner
    Участник

    Добрый день. Помогите разобраться.
    Входные значения A1,A2,An. An = A(n-1) + A(n-2).
    Выходные значения N.
    Т.е. нужно посчитать за какое количество шагов будет получено N.

    start:-
    write('input A1: '),
    read(A1),
    write('input A2: '),
    read(A2),
    write('input AN: '),
    read(AN),
    sum_element(A1,A2,AN,_).
    sum_element(A1,A2,AN,N):-
    AN>A2,
    NewResult is A1 + A2,
    NewN is N + 1,
    B1 = A2,
    sum_element(B1,NewResult,AN,NewN).
    sum_element(_,_,_,N):-
    write('Element = '),
    write(N), nl.

    Программа не работает. На строчке NewN is N + 1 выдает ошибку.
    argument are not sufficiently instantiated

    A1 и A2 — начальные входные значения. Альфа и бета пока не вставлял, т.к. они константы, можно будет дописать в конце.

    Формула:
    A(N) = Alpha * A(N-1) + Beta * A(N-1)

  • #1824

    Описание ошибки говорит о том, что переменная N не имеет значения (тебе ведь по заданию ее надо вычислить), а ты берешь и используешь ее значение — она находится в правой части выражения is.

    Значение переменной N надо считать на обратном ходе рекурсии.
    Чтобы рекурсия работала нужно рассмотреть несколько тривиальных случаев — в твоем задании примерно так:

    Я бы помог кодом, но я так и не понял что значит «посчитать за какое количество шагов будет получено N.». Насколько я понял, в твоем коде N — это есть количество шагов. Ты фактически пытаешься найти число шагов, за которое будет получено число шагов. Это слишком сложно для меня, давай попроще.

    Если N — не число шагов, то его значение должно быть дано, ты ведь говоришь, что нужно посчитать число шагов, за которое будет получено это (но какое именно?) значение.

    Поясните задачу.

Для ответа в этой теме необходимо авторизоваться.