定义一个函数,接受一个整数 cents 并返回四个值,将数字用 25- , 10- , 5- , 1- 来显示,使用最少数量的硬币。(译注: 25- 是 25 美分,以此类推)
CL-USER> (defun cents (n)
(if (not (integerp n))
nil
(let ((x25 0)(x10 0)(x5 0 )(x1 0)(lst nil))
(setf lst (multiple-value-list (floor n 25)))
(if (= 0 (second lst))
(cons 'x25 (car lst))
(progn
(setf x25 (cons 'x25 (car lst)))
(setf lst (multiple-value-list (floor (second lst) 10)))
(if (= 0 (second lst))
(list x25 (cons 'x10 (car lst)))
(progn
(setf x10 (cons 'x10 (car lst)))
(setf lst (multiple-value-list (floor (second lst) 5)))
(list x25 x10 (cons 'x5 (first lst)) (cons 'x1 (second lst))))))))))
CENTS
CL-USER> (cents 5)
((X25 . 0) (X10 . 0) (X5 . 1) (X1 . 0))
CL-USER> (cents 6)
((X25 . 0) (X10 . 0) (X5 . 1) (X1 . 1))
CL-USER> (cents 11)
((X25 . 0) (X10 . 1) (X5 . 0) (X1 . 1))
CL-USER> (cents 15)
((X25 . 0) (X10 . 1) (X5 . 1) (X1 . 0))
CL-USER> (cents 5)
((X25 . 0) (X10 . 0) (X5 . 1) (X1 . 0))
CL-USER> (cents 25)
(X25 . 1)
CL-USER> (cents 10)
((X25 . 0) (X10 . 1))
CL-USER>
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/133735/viewspace-741715/,如需转载,请注明出处,否则将追究法律责任。