Scheme中的递归乘法(带负数的麻烦)

时间:2018-04-19 00:25:13

标签: recursion functional-programming scheme racket

我试图使用递归在Scheme中相乘,我能够使用正数而不是负数(它们陷入无限循环)。我假设问题出现在第3和第4行,我写的是为了能够处理否定。任何帮助将不胜感激:)

string json = "
{
"somestring": "some string value"
"someboolean": true
}
";

1 个答案:

答案 0 :(得分:1)

由于乘法是关联的,你可以拥有

x * (-1 * y)  =  (x * -1) * y

考虑到这一点,您可以将y转换为正数,只要它小于零,将xy都加上-1。 请考虑以下事项:

(define (multiply x y)
  (cond
    ((zero? x) 0)
    ((zero? y) 0)
    ((< y 0)
     (multiply (- x) (- y)))
    (else
     (+ x (multiply x (sub1 y))))))