如何使用一对来查找哪两个函数将评估最大值?方案

问题描述 投票:0回答:1

基本上有一对由两个函数组成,代码必须采用对输入x来找到x的最高评估并打印该评估。 我收到错误:

汽车:合同违规预期:对?给出:4

define (max x)
   (lambda (x)     ;I wanted lambda to be the highest suitable function
 (if (> (car x) (cdr x))
        (car x)
        (cdr x))))

 (define one-function (lambda (x) (+ x 1)))
 (define second-function (lambda (x) (+ (* 2 x) 1)))  ;my two functions

((max (cons one-function second-function)) 4)  
scheme max cdr
1个回答
2
投票

被调用的函数在哪里?你有两个名为x的参数,它们必须有不同的名称。试试这个:

(define (max f)                     ; you must use a different parameter name
  (lambda (x)
    (if (> ((car f) x) ((cdr f) x)) ; actually call the functions
        ((car f) x)
        ((cdr f) x))))

现在它将按预期工作:

((max (cons one-function second-function)) 4)
=> 9
© www.soinside.com 2019 - 2024. All rights reserved.