杨辉三角以前在学习c语言时候,用循环很容易实现。由于刚刚接触函数式语言,递归和迭代方式实现循环还没深入我心。下意思的想用链表来实现,但发现自己对scheme的链表操作太不熟悉,总会出现这样那样子的无法自我解释的问题。最后参考了@dennis_zane的pascal实现,dennis_zane是把杨辉三角左对齐,然后根据坐标之间的关系实现:(pascal x y) ,其中x,y为坐标,(pascal x y) 的值为坐标对应的杨辉三角数值。看了dennis_zane的实现以后,很惭愧自己没有想到。想想其未最终打印出结果,那我来继续完成其工作。当然也是用递归和迭代。
(define (pascal x y)
(cond ((> y x) (display "error"))
((= x 1) 1)
((= x 2) 1)
((= y 1) 1)
((= x y) 1)
(else
(+ (pascal (- x 1) y) (pascal (- x 1) (- y 1))))))
;(pascal 3 2)
(define (display-blank-space n)
(if(> n 0)(begin (display " ")
(display-blank-space (- n 1)))))
(define (pascal-display x y n)
(cond ((and (<= x n) (= x y) (not (= y 1))) (begin (display(pascal x y))
(display "\n")
(pascal-display (+ x 1) 1 n)))
((and (<= x n) (= x y) (= y 1)) (begin (display-blank-space (- n x))
(display(pascal x y))
(display "\n")
(pascal-display (+ x 1) 1 n)))
((and (<= x n) (> x y) (not (= y 1))) (begin (display(pascal x y))
(display " ")
(pascal-display x (+ y 1) n)))
((and (<= x n) (> x y) (= y 1)) (begin (display-blank-space (- n x))
(display(pascal x y))
(display " ")
(pascal-display x (+ y 1) n)))
(else (begin (display "end! ")
(display n)
(display " rows were displayed")))))
(pascal-display 1 1 8)
执行结果的输出截图如下:
- 大小: 3.3 KB
分享到:
相关推荐
《SICP:我的SICP练习》是关于Scheme编程语言和计算机程序设计原理的一份学习资料。SICP,全称《结构与解释程序》(Structure and Interpretation of Computer Programs),是由Harvard大学的Hal Abelson和MIT的...
在SICP中,练习2.5通常涉及到了过程定义、抽象和组合,可能需要读者理解并实现一种计算机制,如迭代或递归。 2. **chapter2.ss**: 这可能是整个第二章所有练习题的集合或者部分题目的解答。通过这个文件,读者可以...
《计算机程序的构造和解释》(SICP)是一本极具影响力的计算机科学教材,由Harold Abelson和Gerald Jay Sussman所著,MIT出版社出版。这本书以其深入探讨编程概念、程序设计方法以及计算机系统的工作原理而闻名。1-3...
《SICP习题解答,主要第一章的内容习题答案》 SICP,全称《Structure and Interpretation of Computer Programs》(计算机程序的构造和解释),是计算机科学领域的一本经典教材,由MIT(麻省理工学院)的 Harold ...
《SICP:我对SICP练习的回答》 SICP,全称为《Structure and Interpretation of Computer Programs》,是一本由Harvard大学的Herman Tulleken和MIT的Gerald Jay Sussman、Guy L. Steele Jr.共同编著的经典计算机...
"sicp-clojure" 项目则是将 SICP 的练习用 Clojure 语言进行了实现,为学习者提供了从不同角度理解和应用 Lisp 风格编程的良好资源。 在这个项目中,你可以找到一系列 Clojure 代码,它们对应于 SICP 教程中的各个...
"sicp-solutions"是一个针对该书练习题的解答集,主要使用了Scheme语言,一个Lisp方言,而具体的实现环境是mit-scheme 9.2。 Scheme语言是Lisp家族的一员,以其简洁的语法和强大的函数式编程特性闻名。在"sicp-...
《SICP解决方案:对SICP练习的回答》 该资源是关于《计算机程序的构造和解释》(Structure and Interpretation of Computer Programs,简称SICP)这本书的解答集,作者针对书中各章节的练习提供了详尽的解答,旨在...
文件"sicp-main"可能是包含了SICP书中各章节练习的解答或者是实现,这将有助于读者检验自己的理解或参考解题思路。在阅读和实践SICP的过程中,以下是一些关键知识点: 1. **函数式编程**:SICP的核心是函数式编程...
SICP - 笔记和练习我把它放在这里是因为有一天它可能会帮助某人。 练习是ex*文件。 章节中的注释和代码是ch文件。安装下载 Racket.app。 使用 DrRacket.app 或像这样启动 Racket repl: /Applications/Racket\ v...
《SICP:在 Scheme 中制定的 SICP 编程练习》是针对计算机科学教育领域的一本经典教材——《结构与解释程序》(Structure and Interpretation of Computer Programs,简称 SICP) 的实践部分。SICP 由 Harold Abelson ...
sicp in python 中文版 sicp in python 中文版 sicp in python 中文版 !!!download>>>https://github.com/wizardforcel/sicp-py-zh
MySICP解决方案 我试图在这个寒假里学习旱灾,这是我对课本习题的解答... 这些答案不一定正确,我可能无法解决所有练习。 但是您可以参考提供的标准解决方案我正在使用中文版的sicp。 教科书中有一些错误, 可以在找到
SICP中文第二版SICP中文第二版SICP中文第二版SICP中文第二版SICP中文第二版
该存储库包含我对《的教科书中提供的练习的所有解决方案。 它们已使用。 请随时使用解决方案进行自己的学习。 如果您发现我的解决方案有任何问题,那么可以向我指出。 我们将不胜感激地收到改进和增强的解决方案。 ...
《SICP 2.2.4 节:图形语言》是计算机科学经典教材《结构与解释程序》(Structure and Interpretation of Computer Programs)中的一个重要章节,它深入介绍了如何利用编程来创建图形,以及如何设计和理解复杂的计算...
《计算机程序的构造与解释》(Structure and Interpretation of Computer Programs,简称SICP)是一本备受推崇的经典计算机科学教材,由Harold Abelson和Gerald Jay Sussman撰写,并由MIT出版社出版。这本书以其深入...
SICP-Python版本
SICP 使用的scheme解释器 以前叫DrScheme