我是一個初學者,我試圖學習一些算術遞歸。我似乎無法圍繞使用方案來做這件事併產生正確的結果。對於我的例子,我試圖通過對字符串中的每個字符進行算術運算來爲字符串生成一個整數鍵。在這種情況下,字符串是一個列表,例如:'(h e l l o)。我需要執行的算術如下:算術遞歸
對於字符串中的每個字符do - >(33 * constant +字母在字母表中的位置) 其中常量是輸入並且字符串以列表形式輸入。
到目前爲止,我有這樣的:
(define alphaTest
(lambda (x)
(cond ((eq? x 'a) 1)
((eq? x 'b) 2))))
(define test
(lambda (string constant)
(if (null? string) 1
(* (+ (* 33 constant) (alphaTest (car string))) (test (cdr string)))
我想測試一個簡單的字符串(測試「(A B)2),但我不能產生正確的結果。我意識到我的遞歸必定是錯誤的,但我一直在玩它幾個小時,每次都碰壁。任何人都可以提供任何幫助實現這種算術遞歸?謝謝,麻煩您了。請記住我在Scheme語言的業餘:)
編輯 我想向被輸入的常數通過使新常數=(+(* 33常數通過串的每次迭代變化)( alphaTest(車串)))。我期待輸入字符串'(ab)和常數2的輸出應該如下:
第一次迭代'(a):(+(* 33 2)(1))= 67總和= 67,常數變67
第二次迭代「(b):(+(33 * 67)(2))= 2213和= 2213,不斷成爲2213
(test '(a b) 2) => 2280
您已經描述瞭如何對字符串的每個字符執行操作,但沒有說明如何組合每個字符的結果以提供最終的單個數字。另外,如果你描述了'(test'(#\ a#\ b)2)' – GoZoner 2013-04-10 14:08:24
我更新了問題的預期結果,它會有所幫助。感謝的GoZoner。 – Sixers17 2013-04-10 17:52:44