Scheme 方案理解

Scheme 方案理解,scheme,Scheme,我应该编写一个scheme函数(数字计数n),它接受一个正整数n,并计算n的位数,即6、4或9 我很难理解我到底应该做什么,我对“n的数字是6、4或9”感到困惑,这是什么意思 这只是一个解释问题,但我想说的是,你可以取一个数字的十进制表示,然后计算出6、4或9的总位数。例如: 100-->0 4-->1 469-->3 444-->3 现在明白了吗?这只是一个解释问题,但我想说的是,你可以取一个数字的十进制表示,然后计算6、4或9的总位数。例如: 100-->0 4-->1 469-->3

我应该编写一个scheme函数(数字计数n),它接受一个正整数n,并计算n的位数,即6、4或9


我很难理解我到底应该做什么,我对“n的数字是6、4或9”感到困惑,这是什么意思

这只是一个解释问题,但我想说的是,你可以取一个数字的十进制表示,然后计算出6、4或9的总位数。例如:

  • 100-->0
  • 4-->1
  • 469-->3
  • 444-->3

现在明白了吗?

这只是一个解释问题,但我想说的是,你可以取一个数字的十进制表示,然后计算6、4或9的总位数。例如:

  • 100-->0
  • 4-->1
  • 469-->3
  • 444-->3

现在就拿到吗?

一种解释-示例:


给定
678799391
,对于
4
1
对于
6
3
对于
9
,位数为
0
。发生次数之和为
0+1+3=4

一种解释-示例:


给定
678799391
,对于
4
1
对于
6
3
对于
9
,位数为
0
。发生次数之和为
0+1+3=4

将整数转换为一个列表,并逐个检查

(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)))).......
我相信你会明白这是怎么回事。它相当粗糙,我不确定它是否真的很地道,但它应该能起作用


其思想是将数字转换为列表,检查第一位数字,如果是6、4或9,则递归调用数字列表的cdr上的过程,将其转换回字符串+1…

将整个数字转换为列表,并分别检查每个数字

(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)))).......
我相信你会明白这是怎么回事。它相当粗糙,我不确定它是否真的很地道,但它应该能起作用


其思想是将数字转换为列表,检查第一位数字,如果是6、4或9,递归调用数字列表cdr上的过程,将其转换回字符串+1…

如果不使用列表,则可以使用10的模
%
,并将整数
/
除以10

下面是递归解决方案:

(define (digits n)
(if(not (< n 1)) (+ 1 (digits (/ n 10))) 0))
(定义(数字n)
(如果(不是(
如果不使用列表,可以使用10的模运算
%
,并将整数
/
除以10

下面是递归解决方案:

(define (digits n)
(if(not (< n 1)) (+ 1 (digits (/ n 10))) 0))
(定义(数字n)
(如果(不是(
首先,我们必须理解问题的含义:它要求您编写一个过程,计算数字4、6或9在另一个输入的数字中出现的次数。例如,输入
10345
应返回
1
。让我们看看原因:

10345
的数字是
1
0
3
4
5
。我们不得不问,“有多少次
4
6
9
出现了?”嗯,
10345
中没有
6
9
。但是,有一个
4
。因此,该过程应返回
1

另一个例子:
(数字计数14289)

让我们像以前一样分手吧。
14289
的数字为
1
4
2
8
9
。没有
6个
。但是,有
1
9
。有多少有一个
1
和一个
9
。由于存在两个(总计)所需数字(所需数字为
4
6
9
),
(数字计数14289)
应返回
2

还有一些例子:

(数字计数144)
-->
2
(有两个
4

(数字计数1)
-->
0
(没有
4
6
、或
9

(数字计数1262)
-->
1
(有一个
6

现在,让我们开始定义。我们可以利用
外观
函数,它接受两个输入并返回第一个输入在第二个输入中出现的次数。 例如:
(amsterdam的外观'a')
返回
2
,因为
amsterdam
中有两个
a

使用
外观
,以下是我们的定义(最后!):


此函数返回4的
外观
、6的
外观和9的
外观之和。请随时回复任何反馈或问题

首先,我们必须理解问题的含义:它要求您编写一个程序,计算数字4、6或9在另一个输入的数字中出现的次数。例如,输入
10345
应返回
1
。让我们看看原因:

10345
的数字是
1
0
3
4
5
。我们不得不问,“有多少次
4
6
9
出现了?”嗯,
10345
中没有
6
9
。但是,有一个
4
。因此,该过程应返回
1

另一个例子:
(数字计数14289)

让我们像以前一样分手吧。
14289
的数字为
1
4
2
8
9
。没有
6个
。但是,有
1
9
。有多少有一个
1