我一直在努力解决这个问题2个小时吧!请考虑以下代码:
(define (PowListF list)
(PowListFHelp list (- (length list) 1)))
(define (FuncPow f n)
(if (= 0 n)
f
(lambda (x)
(FuncPow (f (- n 1)) x))))
(define (PowListFHelp list n)
(if (= n 0)
(list (list-ref list 0))
(cons (FuncPow (list-ref list n) n)
(PowListFHelp list (- n 1)))))
火箭计划编译器给我错误: 申请:不是程序; 期望一个可以应用于参数的过程 给出:(##) 参数...: #
它指向(缺点部分......
和以下使用相同if结构的代码可以正常工作:
(define (polyCheb n)
(reverse (polyChebHelp n)))
(define (polyChebHelp n)
(if (= n 0)
(list (polyChebFunc n))
(cons (polyChebFunc n)
(polyChebHelp (- n 1)))))
(define (polyChebFunc n)
(if (= n 0)
(lambda (x) 1)
(if (= n 1)
(lambda (x) x)
(lambda (x)
(- (* (* 2 x)
((polyChebFunc(- n 1)) x))
((polyChebFunc(- n 2)) x))))))
编辑:PowListF被赋予函数列表作为参数,返回相同的列表s.t每个函数都由自己组成(其索引+ 1)次...
用法: ((list-ref(PowListF(list(lambda(x)x)(lambda(x)(expt x 2))))1)2) 值应为2 ^ 2 ^ 2 = 2 ^ 4 = 16
编辑2:
这是解决方案:
(define (FuncPow f n)
(if (= 0 n)
f
(lambda (x) (f ((FuncPow f (- n 1)) x)))))
答案 0 :(得分:2)
问题在于:(FuncPow(f (- n 1)) x)
调用f
的结果必须是过程(我假设你返回一个过程)。
您进一步将“f
分配为:(list-ref list n)
。