小编Xul*_*luu的帖子

Lisp:遇到条件问题

嘿伙计们,我刚刚开始在我的大学里学习Lisp,但教授非常贫穷,而且自己似乎不懂语言,所以我转向你们所有人.我在Java方面非常有经验,并且在将Java的条件与Lisp相关时遇到了麻烦.这是我被要求解决的问题.

"写一个函数,它接受乘客和两个城市之间的机票量的年龄.如果孩子小于两个机票为0,二至五它是全票价的60%.如果孩子为五他们全程票价."

这是我的解决方案,但我认为这是低效的.

(defun young-child(x y)
        (cond
          ((< x 2) 0)
          ((= x 2) (* y .6))
          ((= x 3) (* y .6))
          ((= x 4) (* y .6))
          ((= x 5) (* y .6))
          ((> x 5) y)))
Run Code Online (Sandbox Code Playgroud)

现在用Java,我就是这样说的

if (x >= 2 && x =< 5) {
  return y*.6
}
else if (x < 2) {
  return 0;
}
else {
  return y;
}
Run Code Online (Sandbox Code Playgroud)

我要问的是:有没有更好的方法来编写这个Lisp条件?如果我必须检查更大范围的年龄,那么使用这种方法代码将变得非常乏味.有没有一种方法可以在Lisp中检查一个if语句中的2个条件,就像我在Java中所做的那样?非常感谢您查看此代码以及任何未来的响应!

common-lisp

2
推荐指数
1
解决办法
84
查看次数

标签 统计

common-lisp ×1