Programming abstractions in C阅读笔记:p166-p175

《Programming Abstractions In C》学习第58天,p166-p175总结。

一、技术总结

1.斐波那契数列(Fibonacci Sequenc)

(1)斐波那契数列来源

斐波那契数列来自于《Liber Abaci》一书里兔子繁殖问题,相关资料很多,这里不赘述。

(2)关于《Liber Abaci》一书

《Liber Abaci》------Liber:a book(意思是"书");Abaci:abacus的复数形式(意思是"算盘")。

根据Laurence Sigler《Fibonacci's Liber Abaci: A Translation into Modern English of Leonardo Pisano's Book of Calculation》一书第9页内容"One should here again make the point, that while derived from the word abacus the word abaci refers in the thirteenth century paradoxically to calculation without the abacus. Thus Liber abaci should not be translated as The Book of the Abacus......"在13世纪, abaci是指直接使用印度数字(Hindu numerals),而不用"算盘"进行计算。所以,这本书恰当的中文译名应该是《计算之书》(The Book of Calculation,注:纪志刚翻译的中文版用的就是这个名字)。

(3)关于"斐波那契"这个名字

既然称为斐波那契数列,那么作者的名字是否叫斐波那契?根据百科说法是:Liber Abaci is a historic 1202 Latin manuscript on arithmetic by Leonardo of Pisa, posthumously known as Fibonacci。Fibonacci是"filius Bonacci",即"son of Bonacci"(波那契之子)。参考Keith Devlin所著《The Man of Numbers: Fibonacci's Arithmetic Revolution》一书)。

2.递推关系(recurrence realtion)

p173:

tn = tn-1 + tn-2

An expression of this type, in which each element of a sequence is defined in terms of earlier elements, is called a recurrence relation。

3.斐波那契序列的C语言实现

复制代码
/*
 * File: fib.c
 * -----------
 * This program lists the terms in the Fibonacci sequence with
 * indices ranging from MinIndex to MaxIndex
 */

#include <stdio.h>
#include "genlib.h"

/* Constants */
#define MinIndex 0
#define MaxIndex 12

/* private function prototype */
int Fib(int n);

/* Main program */

int main() {
    int i;

    printf("This program lists the Fibonacci sequence.\n");
    for (i = MinIndex; i < MaxIndex; i++) {
        printf("Fib(%d)", i);
        if (i < 10) { // 打印对齐
            printf(" ");
        }
        printf(" = %4d\n", Fib(i));
    }
    return 0;
}

/*
 * Function: Fib
 * Usage: t = Fib(n)
 * -----------------
 * This function returns the nth term in the Fibonacci sequence
 * using a recursive implementation of the recurrence relation
 *
 * Fib(n) = Fib(n - 1) + Fib(n - 2)
 */

int Fib(int n) {
    if (n < 2) {
        return n;
    } else {
        return (Fib(n - 1) + Fib(n - 2));
    }
}

二、英语总结

1.suspcious什么意思?

答:

(1)suspicious < suspicion:adj. feel doubt or not trust(可疑的)。 语法结构:be suspicious of。

(2)suspicion < suspect:c/u.

(3)suspect: vt. sub-("up to") + *spek-("to observe"),The notion behind the word is "look at secretly," hence, "look at distrustfully"(怀疑)。

2.supersede是什么意思?

答:p168,The frame for Fact temporarily supersedes the frame for Main。vt. super-(above) + *sed-(to sit),即"displace, replace"之意。

3.essence是什么意思?

答:u. the basic or most import quality of sth(本质、核心)。示例:p174, The essence of recursion is to break problems down into simpler ones that can be solved by calls to exactly the same function。形容词格式:essential。之前老是不记得essential是什么意思,这里对比着来记。

三、参考资料

1. 编程

(1)Eric S.Roberts,《Programming Abstractions in C》:https://book.douban.com/subject/2003414

2. 英语

(1)Etymology Dictionary:https://www.etymonline.com

(2) Cambridage Dictionary:https://dictionary.cambridge.org

欢迎搜索及关注:编程人(a_codists)

相关推荐
magic334165632 天前
ESP32S3开发环境介绍和创建工程
vscode·c·头文件
charlie1145141912 天前
嵌入式现代C++工程实践——第10篇:HAL_GPIO_Init —— 把引脚配置告诉芯片的仪式
开发语言·c++·stm32·单片机·c
charlie1145141913 天前
嵌入式Linux模块学习——insmod 底层全流程解剖:从用户命令到内核内存
linux·c·嵌入式linux
charlie1145141914 天前
嵌入式C++教程实战之Linux下的单片机编程(9):HAL时钟使能 —— 不开时钟,外设就是一坨睡死的硅
linux·开发语言·c++·单片机·嵌入式硬件·c
charlie1145141914 天前
嵌入式Linux模块开发——struct module 深度解析:内核模块的核心数据结构
linux·开发语言·数据结构·c
charlie1145141914 天前
通用GUI编程技术——图形渲染实战(二十七)——坐标变换与矩阵:三级坐标系
c++·学习·c·图形渲染·win32
Trouvaille ~6 天前
【MySQL篇】从零开始:安装与基础概念
linux·数据库·mysql·ubuntu·c·教程·基础入门
洛水水6 天前
io_uring 深度解析
c·异步io·iouring
REDcker6 天前
Android Bionic Libc 原理与实现综述
android·c++·c·ndk·native·bionic
charlie1145141916 天前
通用GUI编程技术——图形渲染实战(二十四)——GDI Region与裁切:不规则窗口与可视化控制
c++·windows·学习·c·图形渲染·win32