0
(define (mult a b) ;;function mult(a,b)
(cond
((IsItZero? b) 0) ;;if b = 0: return 0
((let((c (mult a (rest b)))) ;;c = mult(a, floor(b/2))
(if (= (first b) 0) ;;if b is even
(cons (0 c)) ;;return 2c else:
(addTogether(a cons(0 c)))))))) ;;return a + 2c
在右邊的註釋中,給出了乘法算法的一些僞代碼。左邊是我試圖在實際代碼中實現所述算法,以兩個二進制數字列表作爲參數(從左到右,而不是從右到左)。運行時遇到一個錯誤,該錯誤說明了「procedure application:expected procedure」中的某些內容,給定爲0;參數爲:0。在工作中看到的其他功能是完全獨立的。與球拍有關的問題
任何人都可以提供一個提示或在正確的方向微調?
感謝您的答覆。我忘了提及這個函數並不需要兩個整數作爲輸入,而是兩個二進制數字列表(從左到右,而不是從右到左)。我很抱歉,因爲這是一個非常大的細節。 使用缺點是因爲從我的理解中,在列表的前面添加一個零就會使列表乘以兩。 –
哇。好吧,我們來看看.... :-) –
好的,我添加了一個二進制數字版本。請享用! (尚未測試) –