【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-08-12 20:46:10

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

如何解决:Android中 Error generating final archive: Debug Certificate expired on 10/09/18 16:30 的错误

原文:http://www.cnblogs.com/yyangblog/archive/2011/01/07/1929657.html   问题概述: 在导入一个app后提示如下错误: "Error generating final archive: Debug Certificate expired on 10/09/18 16:30"   原因分析: android要求所有的程序必须有签名,否则就不会安装该程序.在我们开发过程中,adt使用debug keystore,在 pref

10进制 16进制-Extjs中怎样将页面上的10进制数字转换成16进制的保存到数据库

问题描述 Extjs中怎样将页面上的10进制数字转换成16进制的保存到数据库 Extjs中怎样将页面上的10进制数字转换成16进制的保存到数据库 急啊 解决方案 var a=101; a=a.toString(16); alert(a);//用Ext.ajax发送a到服务器保存 http://docs.sencha.com/extjs/4.1.3/#!/api/Ext.Ajax 解决方案二: 1990(10)= 124 ×16+6 =(7×16+12)×16+6--乘出来= =7×16×16+1

C# VB 实现10进制 16进制之间互相转换_C#教程

方法1: 复制代码 代码如下: int d=10; d.ToString("x") //或把x改为X,,,就变成了16位的字符串了. int x=Convert.ToInt32(d.ToString("x"),16);//把16进制的字符串变回10进制的. 方法2: 复制代码 代码如下: static void Main() { int i = 446; string hex = i.ToString( "X" /* or x * ); Cons

信通院发布《5G经济社会影响白皮书》:10年内带动16.9万亿总产出

本周,由IMT-2020(5G)推进组主办的2017年IMT-2020(5G)峰会在北京开幕. 在峰会上,中国信息通信研究院正式发布了<5G经济社会影响白皮书>. <白皮书>指出,5G正在阔步前行,它将以全新的网络架构,提供至少十倍于4G的峰值速率.毫秒级的传输时延和千亿级的连接能力,开启万物广泛互联.人机深度交互的新时代. <白皮书>认为,作为通用目的技术,5G将全面构筑经济社会数字化转型的关键基础设施,从线上到线下,从消费到生产,从平台到生态,推动我国数字经济发展迈

一周电子商务要闻(2008.3.10——2008.3.16)

本期作者 沈俊 一.奥运网店推广联盟启动 3月14日下午消息,北京电子商务协会昨日发起成立奥运网店推广联盟,易趣网.西单igo5.上海CJ.乐友网等成为首批网络推广合作伙伴.北京电子商务协会表示,受北京奥组委独家授权的互联网特许商品官方销售网站"奥运网店"(http://www.2008eshop.cn/)的委托,协会发起成立"奥运网店推广联盟".未来几个月内,国内网民将能通过更多网上渠道方便.快捷地购买奥运特许商品.在活动现场,北京电子商务协会不仅联合133家网站

SQL SERVER 16进制与10进制转换

最近工控项目中遇到的16进制与10进制转换,在.NET中比较容易实现,在SQLSERVER中发现没有直接 的转换,尤其是出现超出范围的long负数,即无符号64位整数在sqlserver中的存储.网上找的很多方法 只适用于32位整数和64位正整数,64位负数无法实现,现将使用的转换方法记录下来. 利用SQLSERVER中的varbinary来间接实现. 16进制字符串转10进制bigint(0-FFFFFFFFFFFFFFFF): 由于二进制比较容易转换为bigint 所以先将字符串转为二进制v

16:9和16:10的显示器有什么区别

  随着面板切割工艺的改进,LCD显示器的面板将开始从现时流行的16:10规格向16:9转变,在2010年大多数笔记本LCD和过半的台式机LCD都将采用16:9的规格.那么,究竟16:10与16:9有什么差别?16:9是意味着屏幕尺寸比16:10的LCD显示器小吗? 现在大多数片源都是采用16:9格式输出的,在以前,用16:10的LCD播放这类片源的时候,要不就是影片填充整个屏幕而造成失真和不能实现点对点的现象;要不就是保持影片的原始宽高比,虽然能做到点对点,但屏幕上下会各留下一条黑边,不仅影响

Linux AIO Ubuntu 16.10发布:一个镜像享受所有“味道”

Linux AIO 开发者 eljko Popivoda今天宣布,包含所有关键Ubuntu 16.10风味(flavors) 的Linux AIO (All-in-One) Ubuntu 16.10 Live DVD正式发布.当你想要在一个ISO镜像上尝试某个Ubuntu 系统(Ubuntu, Kubuntu, Xubuntu, Lubuntu或者Ubuntu MATE),那么只需要将Linux AIO Ubuntu 16.10镜像写入到USB闪存或者DVD光盘就能实现. 下载:Linux AI

【SICP练习】6 练习1.10

 我们先将Ackermann函数写入Edwin中,当然了,再获取结果之前应该先自己用笔算算.结果如下: (A 1 10) ;Value: 1024 (A 2 4) ;Value: 65536 (A 3 3) ;Value: 65536 其中65536也就是16的四次方. 接下来通过连续的n值来观察题目中随后给出的几个过程.和之前一样,直接代入题目中所给的函数即可. (define (f n) (A 0 n)): n   0 1  2  3  4  5   6   7   8   9 (f n