Я новичок в функциональном программировании, особенно в схеме, которая используется ниже. Я пытаюсь сделать следующую функцию рекурсивной, хвостовой рекурсивной. По сути, функция оценивает выравнивание двух строк. При получении двух строк в качестве входных данных он сравнивает каждый «столбец» символов и накапливает оценку для этого выравнивания на основе схемы оценки, которая реализована в функции, называемой Scorer, которая вызывается функцией в приведенном ниже коде.
У меня вроде есть идея использовать вспомогательную функцию для накопления очков, но я не совсем уверен, как это сделать, поэтому как мне сделать функцию ниже хвостовой рекурсивной?
(define (alignment-score string_one string_two)
(if (and (not (= (string-length string_one) 0))
(not (=(string-length string_two) 0)))
(+ (scorer (string-ref string_one 0)
(string-ref string_two 0))
(alignment-score-not-tail
(substring string_one 1 (string-length string_one))
(substring string_two 1 (string-length string_two))
)
)
0)
)