我应该编写一个接受正整数n的方案函数(数字计数n),并计算n为6,4或9的位数。
我无法理解我应该做什么,我对“6位数为4,4或9的数字”感到困惑,这是什么意思?
答案 0 :(得分:4)
这只是一个解释问题,但我会说你会取一个数字的十进制表示,并计算6位,4位或9位的总位数。例如:
立即获取?
答案 1 :(得分:0)
一种解释 - 例如:
给定678799391
,0
的数字4
,1
的{{1}}和6
的{{1}} }。出现的总和为3
。
答案 2 :(得分:0)
将整个数字转换为列表并单独检查每个数字。
(define (number->list x)
(string->list (number->string x))
(define (6-4-or-9 x) (cond ((= x 6) true)) ((= x 4) true)) ((= x 9) true))))
(define (count-6-4-9 x) (cond ((6-4-or-9 (car (number->list x)))).......
我相信你可以看到它的发展方向。它非常粗糙,我不确定它是不是真的,但它应该有效。
我的想法是你将数字转换为一个列表,检查第一个数字,如果它是六个,四个或九个,递归调用转换回字符串+ 1的数字列表的cdr上的过程...
答案 3 :(得分:0)
如果您没有使用列表,则可以使用10的模%
并将整数/
除以10。
以下是递归解决方案:
(define (digits n)
(if(not (< n 1)) (+ 1 (digits (/ n 10))) 0))
答案 4 :(得分:0)
首先,我们必须了解问题是什么:它要求您编写一个程序,计算数字4,6或9出现在另一个输入数字中的次数。例如,输入10345
应返回1
。让我们看看为什么:
10345
的数字为1
,0
,3
,4
和5
。我们必须问,&#34; 4
,6
或9
出现多少次?&#34;好吧,6
中没有9
或10345
。但是,有一个4
。因此,该过程应返回1
。
另一个例子:(digit-count 14289)
让我们像以前一样分手。 14289
的数字为1
,4
,2
,8
和9
。没有6
&#39; s。但是,有1
&{39}和9
。多少?有一个1
和一个9
。由于存在两个(总)所需数字(所需数字为4
,6
和9
),(digit-count 14289)
应返回2
。< / p>
更多例子:
(digit-count 144)
- &gt; 2
(有两个4
&#39; s
(digit-count 1)
- &gt; 0
(没有4
&#39; s,6
,或9
&#39; s
(digit-count 1262)
- &gt; 1
(有一个6
)
现在,让我们开始定义。我们可以利用appearances
函数,该函数接受两个输入并返回第二个输入出现的次数。
例如:(appearances 'a 'amsterdam)
返回2
,因为a
中有两个amsterdam
。
使用appearances
,这是我们的定义(最后!):
(define (count469 num)
(+ (appearances 4 num)
(appearances 6 num)
(appearances 9 num)))
此函数返回appearances
为4,appearances
为6,appearances
为9的总和。请随时回复任何反馈或问题!