博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【SICP练习】64 练习2.35
阅读量:7065 次
发布时间:2019-06-28

本文共 487 字,大约阅读时间需要 1 分钟。



练习2.35

这道题中已经给定了accumulate和map,根据accumulate的参数可以很容易的知道题目中的2处需要我们补充的:(accumulate + 0 (map ...... 因为我们是要累加所有的树叶,这里就需要在map里有一个lambda来讲t中的树叶全部遍历出来,map的第二个参数自然就是t了。

而遍历t的过程中,遇到的节点有可能只是一片树叶,但也有可能是有两个分支。而如果是分支的话,我们又可以让其用count-leaves递归回来。至于判断是树叶还是分支,我们在前面已经遇到过许多次这种问题,用谓词pair?即可。

(define (count-leaves t)

   (accumulate + 0 (map (lambda (sub-t)

                              (if (pair? sub-t)

                                 (count-leavessub-t)

                                  1))

                            t)))

这个过程比起前面几道题就稍微有点宏伟了,来测试一下吧。

(count-leaves ‘(1 2 (3 (4 ( ( (5 ) 6)(7) ( (8 ) 9) 10) ) ) 11) )

;Value: 11

转载地址:http://sgall.baihongyu.com/

你可能感兴趣的文章
内核参数优化
查看>>
用户,组和权限零碎知识
查看>>
计算机
查看>>
文件修改较优方式
查看>>
oracle导入导出exp,imp
查看>>
oracle check if the display variable is set
查看>>
一键部署Openstack R版
查看>>
《JAVA——帮你解决高并发秒杀》
查看>>
国家级期刊发表要求注意事项
查看>>
C文件操作
查看>>
观察转小写的操作-字符函数
查看>>
Oracle查询访问同一表的两个以上索引(二)
查看>>
office 2016 下载地址
查看>>
Go语言之调试
查看>>
Go语言之 unsafe 包之内存布局
查看>>
Spring Cloud Config 入门
查看>>
rhce第二天笔记
查看>>
oneproxy中间件架构及注意事项
查看>>
phpweb解析不当加上传漏洞
查看>>
CentOS自动挂载NTFS分区的U盘或者移动硬盘
查看>>