我试图使用递归在Scheme中相乘,我能够使用正数而不是负数(它们陷入无限循环)。我假设问题出现在第3和第4行,我写的是为了能够处理否定。任何帮助将不胜感激:)
string json = "
{
"somestring": "some string value"
"someboolean": true
}
";
答案 0 :(得分:1)
由于乘法是关联的,你可以拥有
x * (-1 * y) = (x * -1) * y
考虑到这一点,您可以将y
转换为正数,只要它小于零,将x
和y
都加上-1
。
请考虑以下事项:
(define (multiply x y)
(cond
((zero? x) 0)
((zero? y) 0)
((< y 0)
(multiply (- x) (- y)))
(else
(+ x (multiply x (sub1 y))))))