计划用给定列表订购数字的可能性
Scheme possibilities to order a number with a given list
我目前正在用 scheme (drracket) 编写一个程序,它应该采用一个自然数和一个自然数列表,并给出 n
与列表中的元素一起显示的可能性的数量.
例如(p-o-o 37 (list 1 10 100))
是4,因为有以下4种可能显示它:1*37; 10*1+1*27; 10*2+1*17; 10*3+7
我的问题是我真的不知道如何开始,因为在我看来我必须编写一个程序来求解未知变量的方程。
;; exercise 2.19
#lang racket/base
(define (cc amount coin-values)
(define no-more? null?)
(define except-first-denomination cdr)
(define first-denomination car)
(cond
((= amount 0) 1)
((or (< amount 0) (no-more? coin-values)) 0)
(else
(+ (cc amount
(except-first-denomination coin-values))
(cc (- amount
(first-denomination coin-values))
coin-values)))))
racket@ex-2.19.rkt> (cc 37 '(1 10 100))
4
我目前正在用 scheme (drracket) 编写一个程序,它应该采用一个自然数和一个自然数列表,并给出 n
与列表中的元素一起显示的可能性的数量.
例如(p-o-o 37 (list 1 10 100))
是4,因为有以下4种可能显示它:1*37; 10*1+1*27; 10*2+1*17; 10*3+7
我的问题是我真的不知道如何开始,因为在我看来我必须编写一个程序来求解未知变量的方程。
;; exercise 2.19
#lang racket/base
(define (cc amount coin-values)
(define no-more? null?)
(define except-first-denomination cdr)
(define first-denomination car)
(cond
((= amount 0) 1)
((or (< amount 0) (no-more? coin-values)) 0)
(else
(+ (cc amount
(except-first-denomination coin-values))
(cc (- amount
(first-denomination coin-values))
coin-values)))))
racket@ex-2.19.rkt> (cc 37 '(1 10 100))
4