自己默默做题总是没有动力做完,网上查题解好费劲,按序答在此处。希望自己慢慢补充完,其中可能有错误,欢迎大家指出。
你的留言,是我前进的动力!哈哈哈。
p39 题1-2
- 答:(书上提供了答案,我觉得从两方面来记比较好)
a. 作为程序提供商:
- 如果是多用户计算机系统,需要指出所需内存
- 如果是单个计算机系统,也需要知道计算机内存是否够
- 估算该程序可以解决的最大问题规模
b. 作为用户:
- 用户使用时,更偏向使用需要内存小的程序来解决问题
- 答:
- 防止计算机死循环,程序要提供运行时间上限
- 程序要能卖出去,也不能接受响应时间特别长
- 在分析采用哪种解决方案时,需要时间复杂度值
p43-p44
- 答:
不一样吧,编译器不同,编译选项(覆盖啊、优化选项啊)都对长度有影响。
- 答:
指令空间、数据空间、数据栈
- 答:
- double 8字节,8*3 = 24
- int 4字节,210100
- 竟然是三维数组,100520*8
- float 4字节,四维数组?! 10101054
- bool 1字节,234
- long 4字节,43333
- 答:
同递归求和,在递归行return rSequential(a, n-1, x)这,S(n)为12n
- 答:
循环,S(n) = 0; 递归,S(n) = 12 * n
#include <iostream>
using namespace std;
int fatorial(int ); // 非递归的阶乘
int rfatorial(int ); // 递归的阶乘
int main() {
// num为递归值,num=5, 则计算5!
int num = 0;
int result = fatorial(num);
cout <<"非递归:" << num << "! =" << result << endl;
int rresult = rfatorial(num);
cout << "递归:" << num << "! =" << rresult << endl;
}
// 非递归的阶乘,S(n) = 0
int fatorial(int x) {
int result = 1;
for (int i = x; i > 0; i--) {
result *= i;
}
return result;
}
// 递归的阶乘,S(n) = 12*n
int rfatorial(int x) {
if (x == 0) return 1;
else return x * rfatorial(x - 1);
}