我對函數式編程頗爲陌生,特別是下面使用的Scheme。我試圖讓下面的函數是遞歸的,尾遞歸的。 基本上,函數做什麼,是分數兩個字符串的對齊。當給定兩個字符串作爲輸入時,它會比較每個字符的「列」,並根據評分方案累積該比對的評分,該評分方案在名爲scorer的函數中實現,該函數由以下代碼中的函數調用。遞歸與VS.尾遞歸
我有點用輔助函數來積累分數的想法,但我不太清楚該怎麼做,所以我該如何去做這個函數在tail-recursive下面呢?
(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)
)
非常感謝你:)我想我現在把握這個概念。你的代碼非常有意義。再次感謝:) – Curiosity