- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 javascript 中使用方案解释器
当我尝试这段代码时,我收到错误“太多递归”:
;;;basic things
(define map
(lambda (f l)
(if (null? l) l
(cons (f (car l)) (map f (cdr l))))))
(define filter
(lambda (p l)
(if (null? l) l
(if (p (car l))
(cons (car l) (filter p (cdr l)))
(filter p (cdr l))))))
(define accumulate
(lambda (op initial sequence)
(if (null? sequence)
initial
(op (car sequence)
(accumulate op initial (cdr sequence))))))
(define reduce
(lambda (op sequence)
(accumulate op (car sequence) (cdr sequence))))
(define append
(lambda (l1 l2)
(if (null? l2) l1
(append (cons (car l2) l1) (cdr l2)))))
(define make-list
(lambda (n f l)
(if (= n 0) l
(make-list (- n 1) f (cons (f n) l)))))
(define make-list2-
(lambda (f n1 n2 l)
(if (> n1 n2) l
(make-list2- f (+ n1 1) n2 (cons (f n1) l)))))
(define make-list2 (lambda (f n1 n2) (make-list2- f n1 n2 null)))
(define identity (lambda (x) x))
(define randomitem (lambda (l) (nth (ceil (* (random ) (length l))) l)))
;;;
(define random0to3 (lambda () (floor (* 4 (random )))))
(define moverandom (lambda (this) (move this (random0to3 ))))
(define searchforcreature
(lambda (this cx cy) ;search only for neighbor tiles
(begin (define y (make-list2 identity (- cy 5) (+ cy 5)))
(define L (map (lambda (x) (map (lambda (y2) (cons x y2)) y))
(make-list2 identity (- cx 5) (+ cx 5))))
(define L2 (reduce append L))
(define listoftiles (map (lambda (x) (tile-from-pos (car x) (cdr x))) L2))
(define listoftiles2 (filter identity listoftiles)) ;remove the falses you get from trying invalid positions
(define listofcreatures (filter (lambda (x) (and (creature? x) (not (= x this)))) (map topthing listoftiles2)))
;(pairtostring listofcreatures)
(if (null? listofcreatures)
#f
(car listofcreatures)))))
(define update
(lambda (this world)
(begin
(define target (searchforcreature this (creature-x this) (creature-y this)))
(begin (print target)
(if target
(attack this target)
(moverandom this))))))
但在 searchforcreatures 函数中使用 10 而不是 5,这意味着我创建了一个包含 400 个项目的列表,然后使用 tile-from-pos 函数映射它们但是当我在 drScheme 中测试相同的函数时它运行良好,是因为 javascript 没有针对递归进行优化吗?
我的游戏,你可以在其中测试上面的代码:thesamesite/textarea.html
游戏的主要代码,在scheme中:thesamesite/env0.sc
最佳答案
需要方案实现来优化尾调用,以便递归在常量空间中执行。最有可能的是,假设您的代码是尾递归的,基于 Javascript 的“解释器”不会进行该优化。 [实际上,考虑到优化可能会在编译期间完成,而不太可能在解释期间完成。]
关于javascript - 太多的递归方案javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15537996/
我有一个使用 PHP 和 MariaDB 10.3 的小型大型数据库应用程序。 我有大约 100 个表,大约有 3,000 个 View 。 当超过 1,000 个 View 时,数据库架构就会崩溃并
parsing "\(|.*?)|)" - Too many )'s. 写这个的时候我收到这个错误... private static Regex resourceTextsREGEX = new
我有一个Powershell脚本,它会生成一个包含数据的JSON文件。 我对此文件有问题。它产生两倍的“\”! 你知道我该怎么解决吗? 这是我的生成JSON文件的代码: [ordered]@{ pcn
我不确定为什么会收到此错误,我在不同点使用 str.join() 和 os.path.join()在脚本中,这是原因吗? 使用os.path.join: from os.path import get
一段时间后,在我的应用程序中,似乎出现了一个大问题。有一个来自 Box2D 的 b2Bodys 的构建。我确实在我的应用程序中使用了一些 b2Body 来进行碰撞,但我会说屏幕上一次最多有 10 个。
我正在创建一个包含 6 种不同问题类型的简单数学程序。我想让程序随机显示6种类型中的一种,但有些问题应该出现得比较频繁。我使用加权数组,但从加权数组中选择问题类型后,如果不在 if 语句中使用 10
我想构建一个包含大约 400 个单元的 Controller ,4 列,每列 100 个单元。每个单元格都必须被绘制并响应鼠标事件。这个会不会太重了?我应该为每个单元使用另一种方法,如 CALayer
我是 Haskell 的新手,在编写小程序时,我通常会使用太多的 where 子句来检查函数中的许多内容,因此编写 where 子句是一种很好的做法,或者还有其他好的替代方法吗? 例如,在下面的代码中
我有一个 index.js,其中包含一些导出,每个导出仅包含一个函数。我尝试一次部署其中的几个,CLI 给我以下错误; Error: Too many arguments. Run firebase
我在正则表达式上挣扎了几个小时,似乎没有找到最后一点解决方案。我基本上是逐行解析 C 头文件以查找变量。 以下是我可能遇到的需要传递正则表达式的行的情况: //#define variable_nam
我有一个 html 表单,大约有 1500 个输入字段*(文本或隐藏)。form.action 是 POST 并且每个输入字段都有一个唯一的名称(没有 name=foo[])。 每当我在提交表单后尝试
我很困惑 一劳永逸 VS 添加引用(/net 选项卡)说 dll 的 gac 在这里: 我发现这个包含 GAC 的文件夹:(附注:为什么有 3 个 Gac 类型?) 还有这个包含 GAC 的文件夹:
我有一个实现Comparable的对象列表。 我想对此列表进行排序,这就是我使用Comparable的原因。 每个对象都有一个字段 weight,它由另外 3 个成员 int 变量组成。 对于具有最大
在我们的系统中,有多个“站点”通过 WCF 相互通信。每个站点通过 NetTCP 绑定(bind)公开约 20 个接口(interface)。 当一个站点使用对等站点的接口(interface)时,它
我已经从 http://boost.teeks99.com/ 下载了 boost 1.58.0(预编译,x86,VC 12.0)并安装到C:\local\boost_1_58_0(我也试过自己用msv
所以...我有一个查询,该查询返回在我的网站上使用相同的电子邮件地址、密码和其他信息创建的用户帐户(是的,实现不好,不要问)。它通过从另一个程序获取用户 ID 来实现这一点。 我的 SQL 是 SEL
我知道这是一个有点菜鸟的问题,但我只是想问一下,如果我有太多 Controller ,这是好事还是坏事。假设我有一个网络应用程序,它有大约 12 个 View 。每个 View 都有自己的 Contr
我认为我的项目做了一些可笑的错误。我正在制作一个项目,基本上是一组 View Controller ,其中一些 Controller 上有视频,其他 Controller 上有图像。我创建了一个模型,
嘿,我正在创建一个电子商店并显示类别树和所有产品及其多种价格变化,我制作了 150 多个 mysql_query("SELECT ..."); 在一页上查询。 (如果我计算“while”循环)。 是不
我在 JS 方面遇到了问题。我正在尝试制作按类型排序的三个成分列表(用于酿造药水),所有这些都是标签内的复选框。 您应该选择(选中)三个列表中每一个的一个元素才能酿造一剂药水。如果您选择正确的成分并按
我是一名优秀的程序员,十分优秀!