2016-12-29 63 views
0

我是Scheme新手。我試圖編寫一個定義(整數)乘法作爲重複加法的程序。在Python程序看起來是這樣的:重複添加?

a = int(raw_input(['please enter a number to be multiplied'])) 
b = int(raw_input(['please enter a number to multiply by'])) 

y = a 
print y 
for i in range(b-1): 
    y+=a 
print y 

有兩個問題試圖在計劃寫,一個「硬」和一個「軟」的時候,我有:

  1. 「硬」問題:我無法在Scheme中找到等價的範圍函數。我應該如何實現這一點? '軟'問題:在本書的這一點,Scheme沒有引入for循環,這導致我相信該解決方案不包含for循環;但是,如果使用for循環更容易/更好,我很好。

回答

0

您使用遞歸來代替迭代。總體思路是:

mult(a, b) 
    if b == 0, return 0 
    return a + mult(a, b-1) 

現在,你可以在Scheme中自己編碼嗎?

0

球拍(A計劃衍生物)有「命名讓利」,其中一個可以不斷加入每個迴路b乘以(更容易理解這一概念):

(let loop ((n 0) 
      (s 0)) 
    (cond 
    ([= n b] s) 
    (else (loop (add1 n) (+ s a)))))