解析Scheme中的列表并获取所有数字的总和

科格登

因此,我需要编写一个递归解决方案,该解决方案可以遍历列表的目录和子目录并累加文件大小。我在计划方面的经验为零,而我的教授没有回复我。我尝试了几次不同的尝试,但都以错误告终。如果有人可以帮助我,将不胜感激,因为我没有太多时间来解决这项任务。

(define disk '("D" "main"
(
    ("F" "file1.txt" (30))
    ("F" "file2.txt" (11))

    ("D" "sub1"
    (
        ( "F" "file1.txt" (1234))
        ( "F" "file2.txt" (2345))
        ( "F" "file3.txt" (3456))
    )
    )
    ("D" "sub2"
    (
        ( "F" "file1.txt" (1234))
        ( "F" "file2.txt" (2345))
        ( "F" "file3.txt" (3456))
    )
    )
)
)
)

(define (getEnd n)
    (let ((n 1)))
    (let ((m 0)))
    (member 3 '(disk.n))
    (+ m (getEnd (+ n 1)))

)

当我运行代码时,我总是会收到此错误:

          Ill-formed special form: (let (...))

我试过在函数外使用let语句,但是它仍然不起作用,因为我不知道方案如何工作。我已经联系了我的同学,他们似乎也无法弄清楚。

任何帮助,将不胜感激,谢谢!

除夕夜

Alet是在正文或窗体中存在的局部绑定变量。那是:

(let ((n 1))           ; bind one variable 1
  (display (+ n n))    ; use n for something
  )                    ; end of let. `n` no longer exist.

由于您具有标签Java,C语言,因此与此相同:

{
  int n = 1;
  System.out.println(n + n); // use n for something
}
// end of block. n no longer exist

在您的代码中,您没有使用绑定的表达式,如果被允许,它将是无效代码,如下所示:

{
  int n = 1;
}
// end of block. n no longer exist

该代码(member 3 '(disk.n))始终是#f因为它'(disk.n)是一个带有一个符号的列表,disk.n并且(equal? 3 'disk.n) ; ==> #f

最后一行(+ m (getEnd (+ n 1))通过增加进行无条件递归n它不会对结构中的任何数值求和。

问题

看来您可以通过查看第一个元素是“ F”还是“ D”来检查列表是文件还是目录,因此您可以执行以下操作:

(define (file? lst)
  ; todo: implement
  )

(file? '("F" "file1.txt" (1234))) ; ==> #t
(file? '("D" ())                  ; ==> #f

您可以通过检查目录的第三个元素来获取文件列表:

(define (directory-elements dir)
  ; todo: implement
  )

(directory-elements '("D" "D" (("F" "F1" (1234)) ("F" "F2" (2345)))))
; ==> (("F" "F1" (1234)) ("F" "F2" (2345)))

您可以创建一个获取文件大小的过程:

(define (file-size file)
  ; todo: implement
  )

(file-size '("F" "F1" (1234)))
; ==> 1234

现在,您可以使用上面的步骤进行目标操作:

(define (size file-or-dir)
  (if (file? file-or-dir)
      (file-size file-or-dir)
      (directory-elements-size (directory-elements file-or-dir)))

(size '("F" "F1" (1234))) ; ==> 1234
(size '("D" "D" (("F" "F1" (1234)) ("F" "F2" (2345))))) ; ==> 3579

你失踪了directory-elements-size可以通过递归来实现:

(define (directory-elements-size lst)
  (if (null? lst)
      <???>                                  ; size of an empty directory
      (+ (size <????>)                       ; add the size of first file/dir
         (directory-elements-size <????>)))) ; with the size of the rest of the elements

妳去 您应该拥有足够的力量来继续前进。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从数字列表中获取所有可能的总和

来自分类Dev

如果这些数字的总和超过100,则打印出列表中的所有数字。

来自分类Dev

如何从列表中获取所有数字的平均值

来自分类Dev

Python,从子列表中删除所有数字

来自分类Dev

从长字符串中获取所有数字

来自分类Dev

从 grep 的输出中获取行首的所有数字

来自分类Dev

如何在javascript中获取所有数字

来自分类Dev

如何获取字符串中所有数字的总和-Visual Basic 2010(模块)

来自分类Dev

如何从列表中获取除与某些字符串有关的数字以外的所有数值

来自分类Dev

获取所有数字除以除数和余数的所有时间的列表

来自分类Dev

给定范围内所有数字的总和除以3和5,并以列表形式显示数字范围

来自分类Dev

一列中3个表中所有数字的总和?

来自分类Dev

计算多重选择中的所有数字,返回总和Multiselect + jQuery

来自分类Dev

awk打印每行的总和,但是如何排除字符中剩余的所有数字

来自分类Dev

如何在选定的listForm C#中查找所有数字的总和

来自分类Dev

如何将数字与列表中的所有数字进行比较而不循环列表?

来自分类Dev

如何找到数组中所有数字的总和?

来自分类Dev

返回范围内所有数字的总和

来自分类Dev

查找a和b之间所有数字的总和:Ruby

来自分类Dev

多维数组中所有数字的总和

来自分类Dev

如何找到数组中所有数字的总和?

来自分类Dev

斐波那契数列:所有数字的总和

来自分类Dev

为python列表中的所有数字计算所有产品

来自分类Dev

删除列表中除1个数字以外的所有数字(PYTHON)

来自分类Dev

递归获取多维数组内的所有数据的总和:

来自分类Dev

如何从列表中获取数字的总和

来自分类Dev

如何从BATCH中的字符串中提取数字并获取所有数字的总数?

来自分类Dev

增加文件中的所有数字

来自分类Dev

对“ du”中的所有数字求和

Related 相关文章

  1. 1

    从数字列表中获取所有可能的总和

  2. 2

    如果这些数字的总和超过100,则打印出列表中的所有数字。

  3. 3

    如何从列表中获取所有数字的平均值

  4. 4

    Python,从子列表中删除所有数字

  5. 5

    从长字符串中获取所有数字

  6. 6

    从 grep 的输出中获取行首的所有数字

  7. 7

    如何在javascript中获取所有数字

  8. 8

    如何获取字符串中所有数字的总和-Visual Basic 2010(模块)

  9. 9

    如何从列表中获取除与某些字符串有关的数字以外的所有数值

  10. 10

    获取所有数字除以除数和余数的所有时间的列表

  11. 11

    给定范围内所有数字的总和除以3和5,并以列表形式显示数字范围

  12. 12

    一列中3个表中所有数字的总和?

  13. 13

    计算多重选择中的所有数字,返回总和Multiselect + jQuery

  14. 14

    awk打印每行的总和,但是如何排除字符中剩余的所有数字

  15. 15

    如何在选定的listForm C#中查找所有数字的总和

  16. 16

    如何将数字与列表中的所有数字进行比较而不循环列表?

  17. 17

    如何找到数组中所有数字的总和?

  18. 18

    返回范围内所有数字的总和

  19. 19

    查找a和b之间所有数字的总和:Ruby

  20. 20

    多维数组中所有数字的总和

  21. 21

    如何找到数组中所有数字的总和?

  22. 22

    斐波那契数列:所有数字的总和

  23. 23

    为python列表中的所有数字计算所有产品

  24. 24

    删除列表中除1个数字以外的所有数字(PYTHON)

  25. 25

    递归获取多维数组内的所有数据的总和:

  26. 26

    如何从列表中获取数字的总和

  27. 27

    如何从BATCH中的字符串中提取数字并获取所有数字的总数?

  28. 28

    增加文件中的所有数字

  29. 29

    对“ du”中的所有数字求和

热门标签

归档