Recursion 改变:初学者的麻烦

Recursion 改变:初学者的麻烦,recursion,scheme,coin-change,Recursion,Scheme,Coin Change,我正在尝试创建“makechange”,它将返回ls个硬币,其总和=输入,并且它需要包含尽可能少的硬币数量。 例:(更改99) =>(四分之一硬币一便士)以下是进行更改时应遵循的原则: 如果剩余金额正好等于1、5、10或25,则返回相应的硬币 否则,cons您可以在(make change(-x value))结果上使用的最大硬币,其中value是您刚才使用的硬币数量 您可以知道此过程将终止,因为通过第2步,金额将越来越小,直到最后可以通过第1步结束。如果是家庭作业,请将其标记为家庭作业。另

我正在尝试创建“makechange”,它将返回ls个硬币,其总和=输入,并且它需要包含尽可能少的硬币数量。 例:(更改99)


=>(四分之一硬币一便士)

以下是
进行更改时应遵循的原则:

  • 如果剩余金额正好等于1、5、10或25,则返回相应的硬币
  • 否则,
    cons
    您可以在
    (make change(-x value))
    结果上使用的最大硬币,其中
    value
    是您刚才使用的硬币数量

您可以知道此过程将终止,因为通过第2步,金额将越来越小,直到最后可以通过第1步结束。

如果是家庭作业,请将其标记为家庭作业。另外,使用四个缩进来设置代码的格式。那5美分的硬币呢?首先我会从
cond
中的最大值开始。当x达到零时,你需要一个条件,只需返回空列表。克尼维尔,你太棒了,我终于让它工作了!谢谢你的提示!!我想补充一点,我将把它分解成一个选择硬币的函数,一个实际执行算法的函数,为了清楚起见。我同意Yasir和Marcin的评论。使用这种方法,您将得到
(四分之一便士)
作为42的更改,而
(一角一便士)
将大大缩短。这并没有解决OP的问题,OP需要尽可能少的硬币数量。这个问题澄清了当我第一次尝试它时,它对我不起作用的事情,但那是因为我忘记了我的基本情况&我没有从cond中的最大值开始。。但现在我明白了,它工作得很好。谢谢:)