Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Scheme中分隔数字的位数_Scheme - Fatal编程技术网

在Scheme中分隔数字的位数

在Scheme中分隔数字的位数,scheme,Scheme,我正试图编写一个程序来分隔scheme中数字的位数。我把任意长度的数字作为输入。输出将是nnumber of1s,其中n是数字的长度。例如:-123将输出1。 但是,我的代码只输出1次 为什么会发生这种情况?我的代码中有什么错误 (define (separate x) (cond ((= 0 x) 0 ) ((> 0 x) (separate (/ x 10)))) 1) 另外,如何将数字的实际数字添加到列表中?我对scheme中的列表感到困惑。您

我正试图编写一个程序来分隔scheme中数字的位数。我把任意长度的数字作为输入。输出将是
n
number of
1
s,其中n是数字的长度。例如:-123将输出1。 但是,我的代码只输出1次

为什么会发生这种情况?我的代码中有什么错误

(define (separate x)
    (cond ((= 0 x) 0 )
          ((> 0 x) (separate (/ x 10))))
    1) 

另外,如何将数字的实际数字添加到列表中?我对scheme中的列表感到困惑。

您的代码输出
1
,因为在最后一行中,您返回的是:

1)
它完全忽略了
cond
表达式的值(在Scheme中,只返回最后一个表达式的值),此外,对递归调用的结果不做任何处理

如果您想返回一个列表,那么您的基本情况会发生变化-您必须返回一个初始列表,并在递归步骤中使用
cons
:这是构建输出列表的标准模板

另外,请注意,询问
是否是更好的基本情况,如果
x
恰好是
0
(边缘情况),我们必须返回单个元素列表,而不是
0
。假设输入为非负输入,则此操作应有效:

(define (separate x)
  (cond ((< x 10) '(1)) ; base case: return a single-element list
        (else (cons 1   ; recursive step: add `1` to the output list
                    (separate (quotient x 10)))))) ; and advance recursion

您的代码输出
1
,因为在最后一行中,您返回的是:

1)
它完全忽略了
cond
表达式的值(在Scheme中,只返回最后一个表达式的值),此外,对递归调用的结果不做任何处理

如果您想返回一个列表,那么您的基本情况会发生变化-您必须返回一个初始列表,并在递归步骤中使用
cons
:这是构建输出列表的标准模板

另外,请注意,询问
是否是更好的基本情况,如果
x
恰好是
0
(边缘情况),我们必须返回单个元素列表,而不是
0
。假设输入为非负输入,则此操作应有效:

(define (separate x)
  (cond ((< x 10) '(1)) ; base case: return a single-element list
        (else (cons 1   ; recursive step: add `1` to the output list
                    (separate (quotient x 10)))))) ; and advance recursion

您的代码输出
1
,因为在最后一行中,您返回的是:

1)
它完全忽略了
cond
表达式的值(在Scheme中,只返回最后一个表达式的值),此外,对递归调用的结果不做任何处理

如果您想返回一个列表,那么您的基本情况会发生变化-您必须返回一个初始列表,并在递归步骤中使用
cons
:这是构建输出列表的标准模板

另外,请注意,询问
是否是更好的基本情况,如果
x
恰好是
0
(边缘情况),我们必须返回单个元素列表,而不是
0
。假设输入为非负输入,则此操作应有效:

(define (separate x)
  (cond ((< x 10) '(1)) ; base case: return a single-element list
        (else (cons 1   ; recursive step: add `1` to the output list
                    (separate (quotient x 10)))))) ; and advance recursion

您的代码输出
1
,因为在最后一行中,您返回的是:

1)
它完全忽略了
cond
表达式的值(在Scheme中,只返回最后一个表达式的值),此外,对递归调用的结果不做任何处理

如果您想返回一个列表,那么您的基本情况会发生变化-您必须返回一个初始列表,并在递归步骤中使用
cons
:这是构建输出列表的标准模板

另外,请注意,询问
是否是更好的基本情况,如果
x
恰好是
0
(边缘情况),我们必须返回单个元素列表,而不是
0
。假设输入为非负输入,则此操作应有效:

(define (separate x)
  (cond ((< x 10) '(1)) ; base case: return a single-element list
        (else (cons 1   ; recursive step: add `1` to the output list
                    (separate (quotient x 10)))))) ; and advance recursion

啊!!谢谢我几乎能掌握答案,但不知何故我不能完全掌握答案。如何提高我的方案编程能力?即使是这样简单的问题,我也会被难倒。我将要为一个开源项目做贡献,为此我需要对Scheme有一定的熟练程度。在Scheme中提高自己的技巧是什么?看看,这是有史以来最好的编程书籍之一。它将教你在Scheme中编程的核心概念。我通过SICP学习Scheme。我已经理解了语法。我确实从中获得了有用的编程技巧。然而,我需要练习。我怎么做?我试着修改上面的程序来打印实际的数字。我添加了语句(余数x10),而不是在else部分仅返回1。但是,on(/x10)返回一个浮点数。如何仅获取整数?使用
(商x10)
而不是
(/x10)
啊!谢谢我几乎能掌握答案,但不知何故我不能完全掌握答案。如何提高我的方案编程能力?即使是这样简单的问题,我也会被难倒。我将要为一个开源项目做贡献,为此我需要对Scheme有一定的熟练程度。在Scheme中提高自己的技巧是什么?看看,这是有史以来最好的编程书籍之一。它将教你在Scheme中编程的核心概念。我通过SICP学习Scheme。我已经理解了语法。我确实从中获得了有用的编程技巧。然而,我需要练习。我怎么做?我试着修改上面的程序来打印实际的数字。我添加了语句(余数x10),而不是在else部分仅返回1。但是,on(/x10)返回一个浮点数。如何仅获取整数?使用
(商x10)
而不是
(/x10)
啊!谢谢我几乎能掌握答案,但不知何故我不能完全掌握答案。如何提高我的方案编程能力?即使是这样简单的问题,我也会被难倒。我将要为一个开源项目做贡献,为此我需要对Scheme有一定的熟练程度。在Scheme中提高自己的技巧是什么?看看,这是有史以来最好的编程书籍之一。它会教你在Scheme中编程的核心概念。我学过Scheme