2016-12-29 3 views
0

私はSchemeを初めて使用しています。私は(整数)乗算を繰り返す加算として定義するプログラムを書こうとしています。繰返し加算としての乗算?

  1. 「ハード」問題:私は1「ハード」と1「ソフト」、スキームに書き込もうとしたときに持っている二つの問題があります

    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 
    

    :Pythonでプログラムは、次のようになります:私はSchemeでrange関数の同等物を見つけることができません。これをどのように実装すればよいですか?

  2. 「ソフト」問題:本のこの時点では、forループがSchemeに導入されていないため、解決策にforループが含まれていないと思われます。しかし、それが簡単であれば、forループを使っても問題ありません。

答えて

0

繰り返しの代わりに再帰を使用します。一般的な考え方は次のとおりです。

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

これでSchemeで独自にコードを作成できますか?ラケット(スキーム誘導体)で

0

1がB倍(この概念を理解しやすい)ため、各ループに追加し続けることができます「と名付けられレット」があります:

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