我正在做一个项目,让我们习惯在编程语言课程中使用 plai 类型的语言。我一直被困在一个真正困扰我的问题上(完成了所有其他问题,没有问题)。我们将采用这种数据类型定义:
(define-type Tree
[leaf (val number?)]
[node (val number?)
(left Tree?)
(right Tree? ) ] )
然后“实现函数'scaled',它接受一棵树并返回一棵具有相同形状的树,但所有值都乘以给定的比例。
示例:(scaled (node -5 (leaf 6) (leaf -7)) 2) 应该产生 (node -10 (leaf 12) (leaf -14))"
所以基本上我只需要将所有这些值乘以一个给定的值,在这个例子中是 2。
在尝试不同的方法后,这是我迄今为止所拥有的:
(define (scaled [ t Tree?] [n number?] )
(type-case Tree t
[leaf (val) val]
[node (val left right) ( * val (scaled left) (scaled right) n ) ] ) )
我基于之前为我做对的作业的其他部分创建的代码。问题是,它将所有数字和结果“成功地”与 420 的解相乘,而不是单独将每个值相乘。我知道这与我放置“n”有关,但我尝试了很多不同的方法,但都没有运气。如果有人有任何有用的提示/提示/解决方案,将不胜感激。
谢谢!