【SICP练习】10 练习1.16



练习1.16

这道题题目特别长,说的无非就是要用一个不变量记录中间结果,然后写出对数步数内的通过迭代来计算幂的函数,当然了还要用到题目中括号内的那个关系。下面就直接上代码了:

(define(fast-expt b n)

(fast-expt-iter 1 b n))

(define(fast-expt-iter a b n)

(cond ((= n 0) a)

((even? n) (fast-expt-iter a

(square b)

(/ n 2)))

((odd? n) (fast-expt-iter (* a b)

b

(- n 1)))))

写完代码无一例外的就是测试了:

(fast-expt2 30)

;Value:1073741824

(fast-expt0.123 4)

;Value:.000228886641

时间: 2024-10-11 19:51:55

【SICP练习】10 练习1.16的相关文章

详解2进制,10进制,16进制,8进制,36进制

本篇介绍C/C++语言中的进制的概念,主要介绍2进制.10进制.16进制,这三种是编程时必须掌握的也是最经常使用的.另外,介绍8进制和36进制,当中 36进制在实际project项目中会遇到. (本文选自<C/C++学习指南>.邵发.附录"2进制,10进制,16进制") 讲2进制.10进制.16进制的视频教程,点击观看 权利声明:作者拥有本书的所有权利. 作者授权不论什么人都能够自由转载本站点公布的内容,但转载时必须遵守下面限制: ①转载时必须全文转载.不得有不论什么改动,

详细解释2进制,10进制,16进制,8进制,36进制

本篇介绍C/C++语言中的进制的概念,主要介绍2进制.10进制.16进制,这三种是编程时必须掌握的也是最常用的.另外,介绍8进制和36进制,其中 36进制在实际工程项目中会遇到. (本文选自<C/C++学习指南>,邵发,附录"2进制,10进制,16进制") 权利声明:作者拥有本书的全部权利.作者授权任何人都可以自由转载本网站发布的内容,但转载时必须遵守以下限制: ①转载时必须全文转载,不得有任何修改,必须包含"权利声明"和"官网地址"

SICP 1.10

> 解:这道题有前提条件:x==0 || y==0 || y==1 || (x>0 && y >1) (A 1 10)==1024 (A 2 4)==65536 (A 3 3)==65536 n>=0 (f n)=2*n (g n)=2的n次方 (h n)=h(n)=2的h(n-1)次方,其中h(1)=2,h(0)=0:或 解题技巧:阅读完整个题目,可以肯定是有规律可循的.采用顺推的方式,如先求(A 1 1),再(A 1 2) (A 1 3) .... SICP 1

c#与js中10进制16进制的转化,记录防忘

js: var param="11"; param=parseInt(param,16);  //17 param=parseInt(param,10);  //11 //后面的参数表示param的进制 var param=11; param=toString(param,10); //"11" param =toString(param,16); //"B" //后面的参数表示要转化成的进制 c#: string param="11&

Install Postgresql 10 In Ubutnu 16.04 LTS

PostgreSQL数据库是一个高性能的全功能的开源关系型数据库,这里讲解一下如何在Ubuntu 16.04 LTS 下安装 PostgreSQL 10. 添加软件源 wget -q -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)

单键多通道触摸感应IC选型表-1,2,4,5,6,8,9,10,12,14,16按键替代传统按键开关

我们的优势:1:我司为VINTE/台湾元泰半导体股份有限公司/VINKA的独家授权大中华区代理商,产品渠道正宗,确保原装正品,大量库存现货,客户批量不惧假货!2:公司工程力量雄厚,真诚技术服务支持,搭配原厂服务各种应用产品客户.3:好价格源自连接原厂直销,你有量,我有价,确保原装的好价格.VK原厂代理:许先生 QQ:191 888 5898 TEL:188 9858 2398优势代理元泰VKD常用触控按键IC,简介如下:标准触控IC-电池供电系列VKD223EB --- 工作电压/电流:2.0V

Delphi - 10进制16进制相互转换

10进制转16进制 使用IntToHex可以实现十进制到十六进制的转换,注意这里的参数有两个,第一个表示需要被转换的10进制数,第二个表示转换后用几位来显示16进制数. 代码如下: function OctToHex(iValue, iBit: Integer): String; begin Result := IntToHex(iValue, iBit); end; 16进制转10进制 使用StrToInt可以实现16进制到10进制的转换. 代码如下: function HexToOct(hV

u-boot-2014.10移植第16天----Nor flash启动

第15天时将u-boot.bin文件烧录到Norflash上没有正常启动,考虑到tq2440.h文件中的CONFIG_SYS_TEXT_BASE 值时0x33FC0000,我们将其修改为0,毕竟这个是绝对地址. #define CONFIG_SYS_TEXT_BASE 0 修改.编译.烧录后运行: 结果还是不能运行,这是什么原因呢? 将bootstrap.bin文件重新烧录到Norflash中,将u-boot.bin烧录到SDRAM的0x33fc0000位置,运行也不成功. 将CONFIG_SY

EC读书笔记系列之10:条款16、17

条款18 让接口容易被正确使用,不易被误用 记住: ★“促进正确使用”的办法包括接口的一致性,以及与内置类型的行为兼容 ★“阻止误用”的办法包括建立新类型.限制类型上的操作,束缚对象值,以及消除客户的资源管理责任(即类的设计者应先发制人). ★tr1::shared_ptr支持定制型删除器.这可防范DLL问题,可被用来自动解除互斥锁等等. -------------------------------------------------------------------------- C++的