使用Scheme递归目录以添加文件大小

时间:2016-10-04 22:27:05

标签: recursion scheme racket

所以我问了一些关于这个问题的问题,人们很乐意尝试提供帮助,但是我没有计划方面的经验,所以即使开始我也有很多麻烦。我们的教授告诉我们他会帮助我们,但他没有回复我们的任何电子邮件,并且明天晚上将完成任务。

(define disk 
'("D" "main"
    (("F" "file1.txt" (30)
     ("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))))))))

我需要通过此列表递归并找到所有文件大小的总和。我无法弄清楚如何递归。我用汽车和cdr吗?会员?指数?第一个函数可能涉及使用eq?比较" F"和" D"查看该列表是否包含文件大小元素。

但是,每当我尝试找到第一个目录以外的任何内容时,我可以让DrRacket返回#false。

(define (file? a)
  (car disk)
  )

(file? disk)

使用这个,我可以返回" D"。语法对我来说太陌生了,我在使用if语句来测试它是否符合我的要求时遇到了麻烦。这项任务只剩下一天了,我整个星期都没有取得任何实际进展。我已经和同学们联系了,而且我并不孤单。考虑一下这个我求助,因为我无法在其他任何地方找到它。

谢谢。

1 个答案:

答案 0 :(得分:2)

哇!听起来你没有得到很多帮助。看起来你在如何设计程序的第12节:

http://www.ccs.neu.edu/home/matthias/HtDP2e/part_two.html#%28part._ch~3aproj-lists%29

以下是您的需求:

  • 问题输入的数据定义(具体来说,是问题的文件系统树表示)。
  • 数据示例,包括许多更简单的示例。
  • 此数据定义的模板。
  • 您尝试编写的函数的目的语句和标题。
  • 您尝试编写的函数的测试用例。

在那之后,你应该做好充分的准备来完成它。