昨天翻译到n++,今天继续

上一篇:https://blog.csdn.net/qq_43057060/article/details/95316231

正文

注意E3中的步骤顺序是很重要的,“m <- n,n <- r"和"n <- r,m <- n"是完全不一样的.因为后者意味着n的初始值将会在把它赋值给m前被覆盖掉.因此上面的代码序列等同于"n <- r,m <- r"当多个变量被设为相同的值时,我们可以用连箭头。例如"n <- r,m <- r"可以被写成“n <- m <- r”。交换两个变量的值,可以写成"交换m <> n"他可以用一个辅助的数字t并写作"Set t <- m,m <- n,n <- t”
一个算法从它编号最小的步骤开始,通常为第一步,除非特殊情况,否则按顺序执行后续步骤。在E3中“跳转到E1”表示一个明显的执行顺序。步骤E2中的动作开始于一个条件"如果r=0"也就是说,如果r!=0,就什么也不会发生.我们或许已经加上了一句无用的句子——“如果r!=0,跳到第三步”
一个粗竖线(饶恕作者没加)出现在E3后表示算法结束,恢复文字.
我们现在已经解释了几乎所有的用于标记算法的规则,除了用于标记"下标"或"引索化"的数组的元素的规则.假设我们有n个数据u1,u2······un;我们用u[j]替代uj表示其中的第j个元素,此表示u[j]经常被使用,相似的,a[i,j]有时被用来表示一个双重下标,就像aij.有时多个字母被用作变量名,通常大写;因此TEMP应当用作一个临时保存结果值的变量,PRIME[K]应当是第K个质数,and so on~~~

​ 对算法的表现形式说太多了,现在我们来执行一下,他因该立即被提及,以免读者期望阅读一个算法就像在读小说。

我们老师就经常对我们说,“以为侬来读小锁死呢”(上海话:以为你在读小说书那),我一开始也真在把他当小说书读

这样的尝试将会使它变得非常的难理解什么发生了。一个算法必须被认为是可信的,并且最好的学习一个算法到底是什么的方法是执行他。阅读者应当时刻准备着一支笔和一张纸,在遇到每一个算法时,通过一个例子了解它到底是什么。通常,一个示例的大纲将会被给出,或读者可以轻松举一个。下面我们给出了一个例子,这是一种轻松且简单的方式去理解一个给定的算法,并且其他所有方法通常是失败的。

于是高德纳举了个例子——m=119,n=544,下面是示例C++
#include<iostream>
using namespace std;
int euclid(int m,int n);
int main(){int m,n;cout<<"m=";cin>>m;cout>>"n="cin<<n;m=euclid(m,n);cout<<"r=0\n结果是:"<<m<<endl;return 0;
}
int euclid(int m,int n){int r;while(true){//E1r=m%n;cout<<"r=m%n="<<m<<'%'<<n<<'='<<r<<endl;//E2if(r)cout<<"r!=0"<<endl;else return n;//E3m=n;cout<<"m="<<m<<endl;n=r;cout<<"n="<<n<<endl;cout<<endl<<endl;//two spare line for clear seen}
}

尾递归写法:

#include<iostream>
using namespace std;
int euclid(int m,int n);
int main(){int m,n;cout<<"m=";cin>>m;cout<<"n=";cin>>n;m=euclid(m,n);cout<<"r=0\n结果是:"<<m<<endl;return 0;
}
int euclid(int m,int n){//E1int r=m%n;cout<<"r=m%n="<<m<<'%'<<n<<'='<<r<<endl;//E2if(r)cout<<"r!=0"<<endl;else return n;//E3cout<<"m="<<n<<endl;cout<<"n="<<r<<endl;cout<<endl<<endl;//two spare line for clear seenreturn euclid(n,r);
}
//该写法会被优化成第一种写法

Intel_X86_汇编_(仅包括euclid函数,无LOG)

.E1
movl %edi %eax
idivl %esi
cmp %edx 0
.E2
jnz .E3
movl %esi %eax
ret
.E3
mov %esi %edi
mov %edx %esi
jmp .E1

执行结果:

m=119
n=544
r=m%n=119%544=119
r!=0
m=544
n=119r=m%n=544%119=68
r!=0
m=119
n=68r=m%n=119%68=51
r!=0
m=68
n=51r=m%n=68%51=17
r!=0
m=51
n=17r=m%n=51%17=0
r=0
结果是:17

完美的CODE自夸遭雷劈。


Thanks For Reading


下一篇:https://blog.csdn.net/qq_43057060/article/details/95898885

TAOCP-Reading-计算机程序设计艺术阅读-1-2相关推荐

  1. Medium - 《计算机程序设计艺术》发展史

    来自 计算机程序设计艺术 一些在书架上的书看着如此美丽,不仅仅是因为装帧美,而且书脊上表达了关于主人的话.Donald Knuth 的四精装卷的"计算机程序设计艺术" - 四个很贴 ...

  2. 敏感性分析算法 程序_计算机程序设计艺术(TAOCP)精读笔记1 - 算法分析真正应该有的样子 Part 1...

    系列文章的导航链接: 张浩驰:<趣味算法>专栏所有文章分类 - 导航​zhuanlan.zhihu.com 下篇文章Part 2导航: 张浩驰:计算机程序设计艺术(TAOCP)精读笔记1 ...

  3. 你这辈子可能都不需要看《计算机程序设计艺术》了!

    "欣哥, 我什么时候可以看<计算机程序设计艺术>? " "你这辈子可能都不需要看了!" 我在大学的时候并不知道<计算机程序设计艺术>(简 ...

  4. 披阅十载,84岁图灵奖得主高德纳的《计算机程序设计艺术:卷4B》终于出版

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送 来自:机器之心 从博士期间的一个决定开始,高德纳已经坚持写了 50 年. 刚刚,84 岁 ...

  5. 计算机程序设计艺术 介绍

    <计算机程序设计艺术 >(The Art of Computer Programming ),簡稱TAOCP,是高德纳 (Donald Ervin Knuth)编著的关于计算机程序设计的七 ...

  6. 计算机程序设计艺术 第1卷 第1册 (双语版)

    计算机程序设计艺术 第1卷 第1册 (双语版) 作 者:Donald E.Knuth |苏运霖 出版社:机械工业出版社 日 期:2006年4月 开 本:16开    版 次:1次 页 数:268页 装 ...

  7. 计算机大师高德纳权威著作《计算机程序设计艺术》影印版精装版已经入库,即将上市!

    <计算机程序设计艺术>系列著作对计算机领域产生了深远的影响.这一系列堪称一项浩大的工程,自 1962年开始编写,计划出版 7卷,目前已经出版了 4卷.<美国科学家>杂志曾将这套 ...

  8. 《计算机程序设计艺术》pdf

    下载地址:网盘下载 内容简介 编辑 本书作者D. E. Knuth是在计算机学界十分著名的学者,在本领域享有很高权威和盛名,他的这部著作是无数计算机专业人员的学习教材和参考读物,也是许多专业研究工作者 ...

  9. 计算机程序设计艺术读后感,计算机程序设计艺术(第1卷)读后感1000字

    <计算机程序设计艺术(第1卷)>是一本由[美] Donald E. Knuth著作,清华大学出版社出版的精装图书,本书定价:80.00元,页数:650,特精心从网络上整理的一些读者的读后感 ...

  10. 82岁高龄的高德纳仍在写《计算机程序设计艺术》,那是他未完成的人生目标...

    本文转载自:程序员书库 编译:猿妹 链接: https://www.quantamagazine.org/computer-scientist-donald-knuth-cant-stop-telli ...

最新文章

  1. AMD/NV大跌2周后仅两天收复失地 挖矿成背后推手
  2. Kafka文件存储机制及offset存取
  3. 垃圾回收:引用计数与分代收集机制
  4. 递归算法思路以及题目总结(未完待续...)
  5. javascript权威指南(2)
  6. 10行代码解析krc歌词文件
  7. 时差怎么理解_时差是怎么形成的?
  8. 【scratch案例教学】scratch中秋佳节 scratch创意编程 少儿编程 边玩边学 小朋友这样贺中秋
  9. AVFoundation之语音合成器
  10. 140套高清、超优秀的PPT模板----毕业设计、毕业答辩主题
  11. miceforest插补
  12. esp-01s接入天猫精灵与relay继电器控制电灯
  13. JAVA实现链接生成二维码
  14. [数据压缩]_实验③ DPCM编码
  15. 软著申请 计算机软件分类代码,软著申请代码有哪些要求
  16. 西游记中孙悟空所尊敬的神佛
  17. 搜索引擎只能抓取html文件,通过robots屏蔽搜索引擎抓取网站内容
  18. java三层、四层和五层结构介绍
  19. 全解一款六面体结构化网格划分利器-NUMECA IGG
  20. python爬虫(二十四)爬取汽车之家某品牌图片

热门文章

  1. 关于StretchDIBits 可能返回失败的原因!
  2. c语言令牌桶原理,令牌桶算法及实现(二)
  3. 省市级联实现,并根据IP自动获取省市
  4. solidworks图纸模板添加_solidworks工程图模板制作(大全).doc
  5. PMP考试知识总结【精华--持续更新】
  6. 基于RTMP协议的音视频传输----FLV格式
  7. 社会工程学部分攻击经典方法总结
  8. 车辆维修管理系统mysql_4S店汽车维修管理系统的分析与设计(JSP+MySQL)
  9. matlab 弹簧,利用Matlab进行弹簧振子运动
  10. 使用135编辑器HTML样式,135编辑器滑动样式全教程!