gpt4 book ai didi

使用记忆化计算组合 nCk 的方案

转载 作者:太空宇宙 更新时间:2023-11-03 19:00:14 28 4
gpt4 key购买 nike

我正在尝试计算 nCk 在 Racket /方案中使用内存的组合

我不能使用单独的递归方法来计算 n!。我已经做到了这一点,但说这是错误的语法我实际上修复了错误的句法错误!但仍然在 (let ([ans (assoc (x y) memo part!.有人知道我做错了什么吗?

 (define combm
(letrec ([memo null]
[f (lambda (x y)
(let ([ans (assoc (x y) memo)])
(if ans
(cdr ans)
(let ([new-ans (letrec ([fac (lambda (x)
(if (eq? x 0)
1
(* x (fac (- x 1)))))])
(/ (fac x) (* (fac y) (fac (- x y)))))])
(begin
(set! memo (cons (cons (x y) new-ans) memo))
new-ans)))))])
f))

`

最佳答案

这个表达式 (assoc (x y) memo) 是错误的原因。

如果你像(combm 42 43)那样应用combm,那么(assoc (x y) memo)就变成了(关联(42 43)备忘录)(42 43) 表示“将值 42 应用于 43”。问题是 42 不是函数。

改为尝试 (assoc (list x y) memo)

关于使用记忆化计算组合 nCk 的方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40297221/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com