Syntax 将伪代码转换为逻辑步骤?

Syntax 将伪代码转换为逻辑步骤?,syntax,scheme,infix-notation,coin-change,prefix-notation,Syntax,Scheme,Infix Notation,Coin Change,Prefix Notation,我试图解决硬币兑换问题: 给定一个数字k的列表,有多少种方法可以改变给定的数量m 作为资源之一,我有以下伪代码: (define (count-change amount) (cc amount 5)) (define (cc amount kinds-of-coins) (cond ((= amount 0) 1) ((or (< amount 0) (= kinds-of-coins 0)) 0) (else (+ (cc amount

我试图解决硬币兑换问题:

给定一个数字k的列表,有多少种方法可以改变给定的数量m

作为资源之一,我有以下伪代码:

 (define (count-change amount)
  (cc amount 5))
(define (cc amount kinds-of-coins)
  (cond ((= amount 0) 1)
        ((or (< amount 0) (= kinds-of-coins 0)) 0)
        (else (+ (cc amount
                     (- kinds-of-coins 1))
                 (cc (- amount
                        (first-denomination kinds-of-coins))
                     kinds-of-coins)))))
(define (first-denomination kinds-of-coins)
  (cond ((= kinds-of-coins 1) 1)
        ((= kinds-of-coins 2) 5)
        ((= kinds-of-coins 3) 10)
        ((= kinds-of-coins 4) 25)
        ((= kinds-of-coins 5) 50)))
这就是这个计划的结果吗? 如果不是的话,我错在哪里了?
请再次不要给我答案(如果可以的话,请给我指出正确的方向),因为这将违反coursera荣誉守则

这是else块的内容:

(+ (cc amount
       (- kinds-of-coins 1))
   (cc (- amount
          (first-denomination kinds-of-coins))
       kinds-of-coins))
这是一种方案,其中所有函数(包括算术运算)都是一个括号,函数名作为第一个元素,函数的参数作为后面的元素

首先,使用两个参数调用
+
函数。为了便于解释,让我们调用参数
a
b

(+ a b)
a
b
都是函数调用。这里是
a

(cc amount (- kinds-of-coins 1))
b

(cc (- amount ((first-denomination kinds-of-coins)) kinds-of-coins)
让我们集中讨论第一个问题,
a
a
是对
cc
的函数调用,有两个参数,让我们调用它们
x
y
,我们有这个函数调用:
(cc x y)
其中
x=amount
y=(-硬币种类1)
。您可以看到,
y
也是一个函数调用

这样下去。您可以查看每个括号本身并解析其值。从最里面的括号开始(如在数学中),向外展开


您还需要了解
cc
递归的,这意味着它调用自己来完成工作。当代码由于其他条件为真而不再进入
else
块时,它将最终停止调用自己。这种停止条件称为递归的基本情况。一个好的递归函数在每个递归步骤中(每次调用自己时)都会更接近它的基本情况,因此您可以确定它最终会到达它。

这看起来像是方案代码。“前面的算术符号”仅表示“将
+
函数应用于这两个参数”。这是一个Scheme。是的,它前面有算术符号。如果老师想让你理解这个计划,他们应该给你指一些教程或其他。实际上,您拥有代码,并且您要求我们对其进行反编码。@EmilVikström在再次调用cc的return子句中的-sign如何?我可以从你所说的推断出cc是指数量加上一些东西。我认为这是一个列表。不过,我相信这是有道理的,因为清单并不完整。如果列表包含除第一个元素以外的所有元素。是这样吗?最后一件事。return子句是两个cc函数的一个附加项吗?谢谢您的解释。我试图从else条款中破译这个计划。你能告诉我我做对了吗?感谢您的帮助(查看更新)
(cc (- amount ((first-denomination kinds-of-coins)) kinds-of-coins)