困惑于这个逻辑 - Dracket

时间:2017-04-08 17:48:19

标签: scheme logic racket

(define (incbyD x D)
  (if (< x 10)
      (modulo (+ D x) 10)
      (+ (* 10 (incbyD (round (/ x 10)) D))
         (modulo (+ D x) 10))))

测试用例; //这个游戏是正确的输出,因为它将每个值递增4

(incbyD 1234 4) 
; ==> 5678

输出错误,应为0856

(incbyD 7523 3)
; ==> 1856

输出错误,87695

(incbyD 54362 3)
; ==> 87795

我虽然逻辑是对的,但显然它似乎并不是一直都在运作。我看到的问题是进位值正在显示。

1 个答案:

答案 0 :(得分:0)

round替换为floor。或者,更明确地说,将(round (/ x 10))替换为(quotient x 10)