第一章:引论
- 首先提出了2个问题:
选择问题:设有一组N个数,试确定其中第k个最大的字谜游戏:从字母组成的二维数组中找到单词
- 证明数据结构分析中的结论最常用的两个方法是归纳法和反证法。证明一个定理不成立最好的方法是找一个反例。
- 一个函数用他自己来定义时就称为递归(recursive)。要递归必须满足四个条件:
1 基准情形:必须要有某些基准情形,他们不用递归就能求解;2 不断推进:必须能够朝着产生基准情形的方向推进 (PS:例如书中举的查字典的例子);3 设计法则:假设所有的递归调用都能运行;4 合成效益法则:在求解一个问题的同一实例时,切勿在不同的递归调用中做重复性的工作。
- 习题3
#include <iostream> #include <cmath> using namespace std; void PrintDigit(unsigned int i) { cout<<i; } void PrintOut(unsigned int i) { if (i>=10) PrintOut(i/10); PrintDigit(i%10); } void PutOut(double n, int d) { if (n<0) { cout<<"-"; n = -n; } int integerPart = int(n); PrintOut(integerPart); if (n!=integerPart) { double fractionPart = n - integerPart; cout<<"."; int scaled = fractionPart * pow(10.0,d); PrintOut(scaled); } } int main(int argc, char **argv) { PutOut(-123.34,2); system("pause"); return 0; }