程序求助

发布于 2022-08-12 07:39:39 字数 142 浏览 17 评论 9

wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

[ 本帖最后由 goodstart 于 2008-11-17 23:06 编辑 ]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

老旧海报 2022-08-18 22:59:19

我太着急了

予囚 2022-08-18 22:58:39

不好意思

现在看懂了

浅紫色的梦幻 2022-08-18 22:57:07

原帖由 goodstart 于 2008-11-17 01:30 发表
我运行了那个程序 有结果 是对的 但是不明白 t1 和 t2 是什么

楼主对 Schemem 的语法似乎比我还陌生 :em11:  写不出来总应该看得懂吧?

維他命╮ 2022-08-18 22:57:00

我运行了那个程序 有结果 是对的 但是不明白 t1 和 t2 是什么

疏忽 2022-08-18 22:45:42

这个不是需要的程序吗?

圈圈圆圆圈圈 2022-08-18 22:28:04

原帖由 goodstart 于 2008-11-16 16:35 发表
写不出才会想到来这里求助的 谢谢你

上次我建议您看一看前缀表达式求值规律,不知你看了没有。这个跟 scheme 是没有太大关系的。

  1. (define (prefix-eval expr)
  2.   (define (f expr)
  3.     (cond ((number? (car expr)) expr)
  4.           (else (let* ((t1 (f (cdr expr)))
  5.                          (t2 (f (cdr t1))))
  6.                    (cons ((getopt (car expr)) (car t1) (car t2))
  7.                          (cdr t2))))))
  8.   (car (f expr)))
  9. (define (getopt op)
  10.   (cond ((eq? op '+) +)
  11.         ((eq? op '-) -)
  12.         ((eq? op '/) /)
  13.         ((eq? op '*) *)))

复制代码

  1. guile> (prefix-eval '(* + 7 * * 4 6 + 8 9 5))
  2. 2075

复制代码
[ 本帖最后由 win_hate 于 2008-11-16 20:36 编辑 ]

暗喜 2022-08-18 21:30:27

原帖由 goodstart 于 2008-11-16 16:35 发表
写不出才会想到来这里求助的  

就拿

  1. prefix-eval '(+2 3))

复制代码
来说吧。这个要怎么求值呢?

'(+ 2 3) 是个 list,既然是 prefix expression,那第一个肯定是 operator,取出来看看,是个 '+',binary operator,需要两个 operand,那再把 list 的后两个元素取出来,做加法得到一个和 suml。

当然,若 operator 后面跟的不是数字而是另外一个 operator,则需要先递归调用 prefix-eval 得到 operands 的值,然后再处理当前的 operator。

你就照这个思路往下写吧。

其实写程序也没啥,就是把你解决问题的方法用代码表达出来而已。

[ 本帖最后由 MMMIX 于 2008-11-16 20:50 编辑 ]

通知家属抬走 2022-08-18 20:30:45

写不出才会想到来这里求助的 谢谢你

仄言 2022-08-18 13:20:45

你自己先试着写呗,作业始终是要你自己做的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文