`
hotcharm
  • 浏览: 17117 次
  • 性别: Icon_minigender_1
  • 来自: 义乌
最近访客 更多访客>>
社区版块
存档分类
最新评论

sicp练习1.12 帕斯卡三角(杨辉三角)

阅读更多

杨辉三角以前在学习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
1
1
分享到:
评论

相关推荐

    sicp:我的 SICP 练习

    《SICP:我的SICP练习》是关于Scheme编程语言和计算机程序设计原理的一份学习资料。SICP,全称《结构与解释程序》(Structure and Interpretation of Computer Programs),是由Harvard大学的Hal Abelson和MIT的...

    sicp第二章练习题的解答

    在SICP中,练习2.5通常涉及到了过程定义、抽象和组合,可能需要读者理解并实现一种计算机制,如迭代或递归。 2. **chapter2.ss**: 这可能是整个第二章所有练习题的集合或者部分题目的解答。通过这个文件,读者可以...

    SICP 习题答案

    《计算机程序的构造和解释》(SICP)是一本极具影响力的计算机科学教材,由Harold Abelson和Gerald Jay Sussman所著,MIT出版社出版。这本书以其深入探讨编程概念、程序设计方法以及计算机系统的工作原理而闻名。1-3...

    SICP习题解答,主要第一章的内容习题答案

    《SICP习题解答,主要第一章的内容习题答案》 SICP,全称《Structure and Interpretation of Computer Programs》(计算机程序的构造和解释),是计算机科学领域的一本经典教材,由MIT(麻省理工学院)的 Harold ...

    sicp:我对SICP练习的回答

    《SICP:我对SICP练习的回答》 SICP,全称为《Structure and Interpretation of Computer Programs》,是一本由Harvard大学的Herman Tulleken和MIT的Gerald Jay Sussman、Guy L. Steele Jr.共同编著的经典计算机...

    sicp-clojure:在 Clojure 中解决的 SICP 练习

    "sicp-clojure" 项目则是将 SICP 的练习用 Clojure 语言进行了实现,为学习者提供了从不同角度理解和应用 Lisp 风格编程的良好资源。 在这个项目中,你可以找到一系列 Clojure 代码,它们对应于 SICP 教程中的各个...

    sicp-solutions:SICP练习解决方案

    "sicp-solutions"是一个针对该书练习题的解答集,主要使用了Scheme语言,一个Lisp方言,而具体的实现环境是mit-scheme 9.2。 Scheme语言是Lisp家族的一员,以其简洁的语法和强大的函数式编程特性闻名。在"sicp-...

    SICP-Solutions:我对 SICP 练习的回答

    《SICP解决方案:对SICP练习的回答》 该资源是关于《计算机程序的构造和解释》(Structure and Interpretation of Computer Programs,简称SICP)这本书的解答集,作者针对书中各章节的练习提供了详尽的解答,旨在...

    sicp:SICP练习的解决方案

    文件"sicp-main"可能是包含了SICP书中各章节练习的解答或者是实现,这将有助于读者检验自己的理解或参考解题思路。在阅读和实践SICP的过程中,以下是一些关键知识点: 1. **函数式编程**:SICP的核心是函数式编程...

    sicp:我对 SICP 练习的解决方案(及其尝试)

    SICP - 笔记和练习我把它放在这里是因为有一天它可能会帮助某人。 练习是ex*文件。 章节中的注释和代码是ch文件。安装下载 Racket.app。 使用 DrRacket.app 或像这样启动 Racket repl: /Applications/Racket\ v...

    SICP:在 Scheme 中制定的 SICP 编程练习

    《SICP:在 Scheme 中制定的 SICP 编程练习》是针对计算机科学教育领域的一本经典教材——《结构与解释程序》(Structure and Interpretation of Computer Programs,简称 SICP) 的实践部分。SICP 由 Harold Abelson ...

    sicp in python 中文 sicp 中文

    sicp in python 中文版 sicp in python 中文版 sicp in python 中文版 !!!download&gt;&gt;&gt;https://github.com/wizardforcel/sicp-py-zh

    MySICPSolutions:我对SICP练习的解决方案

    MySICP解决方案 我试图在这个寒假里学习旱灾,这是我对课本习题的解答... 这些答案不一定正确,我可能无法解决所有练习。 但是您可以参考提供的标准解决方案我正在使用中文版的sicp。 教科书中有一些错误, 可以在找到

    SICP中文第二版

    SICP中文第二版SICP中文第二版SICP中文第二版SICP中文第二版SICP中文第二版

    SICP-Clojure:Clojure中SICP练习的解决方案

    该存储库包含我对《的教科书中提供的练习的所有解决方案。 它们已使用。 请随时使用解决方案进行自己的学习。 如果您发现我的解决方案有任何问题,那么可以向我指出。 我们将不胜感激地收到改进和增强的解决方案。 ...

    sicp 2.2.4节图形语言

    《SICP 2.2.4 节:图形语言》是计算机科学经典教材《结构与解释程序》(Structure and Interpretation of Computer Programs)中的一个重要章节,它深入介绍了如何利用编程来创建图形,以及如何设计和理解复杂的计算...

    SICP(python中文带书签)

    《计算机程序的构造与解释》(Structure and Interpretation of Computer Programs,简称SICP)是一本备受推崇的经典计算机科学教材,由Harold Abelson和Gerald Jay Sussman撰写,并由MIT出版社出版。这本书以其深入...

    SICP-Python版本

    SICP-Python版本

    SICP 使用的scheme解释器

    SICP 使用的scheme解释器 以前叫DrScheme

Global site tag (gtag.js) - Google Analytics