SICP 1.20经验

2022-07-14 18:16:15 浏览数 (1)

大家好,又见面了,我是全栈君

1.20 两者之间的主要区别是,使我们明白的操作顺序。

网上找一些答案,都死了扩大。 我们所从事的IT的。 展开搞死人IT实践。

首先考虑应用程序

我们得到

gcd(206, 40) -> gcd(40, 6) -> gcd(6, 4) -> gcd(4,2)->gcd(2,0) 总共4次递归调用,每次递归做一次取余数运算。

那么。 正则序列怎么知道呢? 一种办法是全然按步骤做法。 这是计算机思维。 搞IT的就要换数学思维。

先看看规律。 206-> 40-> 6-> 4 -> 2 存在某种序列关系。我们设定一个序列A。表示求该数所需的余数次数,那么必定有

A[0] = 0, A[1] = 0, A[2] = 1, A[3] = 1 A[1] A[2], A[n] = 1 A[n-1] A[n-2] 为什么?

由于 An = r(A[n-1], A[n-2]) 依照正则求值规则,我们先要展开A[n-1]。A[n-2], 最后再计算A[n]。必定有该公式。

接下来考虑怎样用A来求答案。

通过代码能够知道。 前面的递归。 仅仅有if 里用到了b。 最后一次递归, 用到了a

所以扩大的数

A[1] A[2] A[3] A[4] A[5] A[4] = 0 1 2 4 7 4 = 18次要

相同。由A不管两个数可以得到典型的扩展。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/117874.html原文链接:https://javaforall.cn

0 人点赞