SICP练习1.12生成帕斯卡三角形

这道练习的中文版翻译有误,原文是『...Write a procedure that computes elements of Pascal’s triangle by means of a recursive process.』,译文只翻译了『。。。它采用递归计算过程计算出帕斯卡三角形。』,这里应该是『帕斯卡三角形的各个元素』才对。

在SICP解题集中,作者分别展示了用递归计算过程和迭代计算过程来求出一个值的过程,该值是帕斯卡三角形第row行的第col个元素的数值,过程接收row和col两个参数。

我自己的想法是,我希望写出一个过程,它接收一个正整数,求值出一个n个元素的表,表的第x(1 <= x <= n)个元素是帕斯卡三角形第x层的元素表。

于是我首先define一个过程,把它命名为pasika(没错,就是帕斯卡的拼音哈哈),它接收形参n,求值出1~n层的帕斯卡三角形,并将它们按递增顺序装入一个表中。

为了实现它,我用“按愿望思维”的策略。
我先假定有那么一个中间过程pasika-n-list,它接收形参N,求值出帕斯卡三角形的第N层的所有数值,并组成一个表;

然后我又假定有一个过程pasika-list,它接收形参a和b,返回帕斯卡三角形从a层到b层元素表的表。如此一来过程pasika就可以这样定义:

       (define (pasika n) 
            (pasika-list 1 n))

然后pasika-list过程也可以这样定义:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值