E1.2.3 in sicp lamba应该很高级的说

gyumni | Aug. 21, 2019, 11:47 a.m.

从1.2.2练习中,我思考方式是什么样,有没有变

我总结完那个关于整节的公式和算法pattern,然后我再做1.2.2练习,这时候,我记下一些需要添的define,费马小定理用到哪些procedure,这些part被我列在纸上,当我在遇到没有出现过的error时,我会从问题中,分析,可能是巧合,并行计算,什么什么的,当我在设计算法的时候,我脑子里出现了这些patten,我考虑这些patten的方式,功能,和我的功能是不是一样子实现。当我想做starttime的时候,我想着怎么合并我需要的各种partly,就用到了black box,这些东西只是类于原始程序如+ - =,然后我用到新的部件的制作和其他已有的部件相吻合,我开始制作新部件了,我想到了什么是inter define,怎么用的注意的是迭代有没有可能不能用inter,当写新部件的时候,我想这个部件的功能,输出结果,想相不相同,因为,part是不是你想要输出结果所用到的那个。因为不是,所以我下一步开始观察,我手上的这些part怎么让他们乖点,这些part他们的结果和我的结果,直接差了什么步,我一点一点,小心的在可以改动的功能上面逼近,想象离我的结果距离多么了,快了,快了,然后呢,就剩下修理不听话的部分,这时候,已经完成了,我有空间,我也懒,我想把这些更加自动一点,甚至步骤也要测试,当遇到超过小的计算,到大的计算的时候,我想我应该很愿意,因为它不意味着更麻烦

当我在做c的时候,我只是也数学改编成了程式,但当然,我需要跳跃式的观察,就是,输入一个input走每一步,即使是一点小错误也会让我摸不到方向,因为我在debug中学习,如果我的线性关系是对的,但结果是错的,我很容易怀疑,我的整个和我改动是不是对的方向,可以说我一无所知,我很容易重复我做的程式,因为我在用到的时候,我想不到关系,这怎么用啊,我曾想过尽职尽责的记下每一个procedure用某种方法把他们记下来,然后呢,经常看,这样不会等到做完辛辛苦苦想出来,发现和以前一致

这是一种方式,额,我可以不再记procedure,而是记pattern

感觉如果是回归分析的话,就会有一条线,

√m/2+x(当处理一个n步的数I的时候)感觉自己在发明计算方程n与I的关系  13 √m  14 n*(m+3)/m = n    
1.8199999999999998 2.719999999999999 2.7*(10+3)/10 = 1.8 1000000000039  
1.9 2.6099999999999994 2.6*(10+3)/10 = 1.9 1000000000061  
1.62 2.510000000000016 2.5*(10+3)/10 =1.6 1000000000063  
5.470000000000001 8.629999999999995 *(10+3)/10 =  10000000000037  
4.900000000000001 8.14 *(10+3)/10 =  10000000000051  
5.3100000000000005 8.130000000000003 *(10+3)/10 =  10000000000099  
n * √m/2+1.5×n*√m/m n * √m        

 

      

I和n之间的关系等于x和n之间的关系设步骤为

不知道I,寻找一种方法代替I(已知n步,倍数m,√m)

input   steps

I          n

I * m    n * √m

I = n * √m/m

y = I(y为(+ test-divisor 1) steps)

(因为y为I执行+1的步骤input value I每提高1,y加1,所以在情况y正常使用的情况下,y是n*√m/m,但是后来x=y/2,少了偶数的一半加y(check每个I是否等于2)x=y/2+y=3y/2=3n * √m/m/2)

now

input   steps

I         

n(√m/2是因为减小了偶数的计算量,从整体上来看)

(1.5 可以理解为even + odd ->odd + even +odd,所以是1.5倍的I)

因为I没有变化,所以可以理解为,所需要的y->x,也满足2->3倍关系

所以有

I * m    

n * √m   -->    n * √m/2+1.5×n*√m/m = n*√m*n(m+3)/m

n-->n(m+3)/m

1000000000001 1.8vs2.7          
10000000000001  5.4 vs8.6        n * √m vs  1.5×n√m/2+n*√m/m n*√m*n(m+3)/m
   

以下是e1.2.4

当输入为n的时候,输出是k

bn b2nobserve that computing b2n using fast-expt requires only one more multiplication than computing bn.

times = 10000

我怎样知道我base是什么,有关于,exp n 的base,base is n

3的4次幂是81 以3为底的log81=4

exp vs log

3的4次幂 4steps 3的8次幂 5steps

所以input为base  times(a一个数的n除以a=a)(这里同样的感觉,不想继续写了,因为问题不清晰,还有就是实现不清晰08/22/2019/17:03)

exp log
b的n次幂等于m 以b为base的logm=n
3的4次幂是81 以3为底的log81=4
base的exp次幂等于 以base为base的log(base)exp=exp
(define (expt b n)
  (expt-iter b n 1))

(define (expt-iter b counter product)
  (if (= counter 0)
      product
      (expt-iter b
                (- counter 1)
                (* b product))))

(define (fast-expt b n)
  (cond ((= n 0) 1)
        ((even? n) (square (fast-expt b (/ n 2))))
        (else (* b (fast-expt b (- n 1))))))

(define (even? n)
  (= (remainder n

2) 0))

我有写更多但没有保存好

有一个框框我记得结论是,times,是十倍的

(define (expmod base exp m)
  (cond ((= exp 0) 1)
        ((even? exp)
         (remainder (square (expmod base (/ exp 2) m))
                    m))
        (else
         (remainder (* base (expmod base (- exp 1) m))
                    m))))  

exp n 的base,base is n,既然logn 那么base是谁,然后增加一(如同E1.1.5的sine),后来考虑到,random,影响计算steps就没有继续,但是做完1.1.7,我考虑了一下,需要代替模型的了解

 

About Us

brown1730and...

square是怎么回事和odd之间的关系,对了cs50大板上China2013年度有六个人提交了fPhttps://expo.cs50.net/

不知道会不会这加上√10/10

2.7*√10=8.6

2.6*√10=8.1

2.5*√10=8.2(.1)

 

变成了 √10/2倍+1.5*√10/10倍

就是1.8*√10/2+1.5×1.8×√10/10=5.4

1.9*√10/2+1.5×1.8×√10/10=4.9

1.6*√10/2+1.5×1.8×√10/10=5.3

square是怎么回事和odd之间的关系 if (square a) is biger than n,that n is primet,还是想说一下质数的孤独这本书,质数们,永远在一起,却不能靠近
经过checks是不是计算next 的步骤呢,加二,而不是加上一,多了是不是二这个步骤,steps与dives成一的关系,看看11个零的

如果t是n步的话,t2就算2n(加上x步(x步dy多少)x步与n步什么关系)

x是不是next中的if环节,等于多少,和input intger成正比,I和t中的n是什么,n是√I步

I 扩大十倍,n增加根号十倍
I扩大十倍,x增加十倍。(if (= x 2))
所以是√m/2+m倍,与√m,

Know more about EOPL! Know more about SICP!