Scheme 方案函数作为参数
该程序应该使用Scheme 方案函数作为参数,scheme,Scheme,该程序应该使用 (define (sum f n) (if (= n 0) (f 1) (+ (f n) (sum f (- n 1))))) (define (harm-term k) (/ 1 k)) (define (harm-sum n) (sum (harm-term 1) n)) 创建一个名为harm sum的函数,用于计算谐波级数之和。但我一直在犯错误 应用程序: not a procedure; expected a pro
(define (sum f n)
(if (= n 0)
(f 1)
(+ (f n) (sum f (- n 1)))))
(define (harm-term k)
(/ 1 k))
(define (harm-sum n)
(sum (harm-term 1) n))
创建一个名为harm sum
的函数,用于计算谐波级数之和。但我一直在犯错误
应用程序:
not a procedure;
expected a procedure that can be applied to arguments
given: 3
arguments...:
求和函数
(define (sum f n)
(if (= n 0)
(f 1)
(+ (f n) (sum f (- n 1)))))
(define (harm-term k)
(/ 1 k))
(define (harm-sum n)
(sum (harm-term 1) n))
您最终调用sum的方式是错误的,因为您调用sum时使用了(harm term 1)
作为预期函数的参数<代码>(危害术语1)的计算结果明显为1
这意味着,当它稍后在sum中用作参数f
时,它没有任何意义(即,您最终调用(11)
)
你应该这样做:
(define (sum f n)
(if (= n 0)
(f 1)
(+ (f n) (sum f (- n 1)))))
(define (harm-term k)
(/ 1 k))
(define (harm-sum n)
(sum harm-term n)) ; the difference is the function itself is passed instead of the value the function returns for 1
这解决了你的问题吗?