一个资深的C语言程序员,基本上不会在自己的主循环里搞什么复杂的运算工作,绝对都是先计算好了,再到循环里查表。看下面的例子:
旧代码:
- long factorial(int i)
- {
- if (i == 0)
- return 1;
- else
- return i * factorial(i - 1);
- }
查表法新代码:
- static long factorial_table[] = {1, 1, 2, 6, 24, 120, 720 /* etc */ };
- long factorial(int i)
- {
- return factorial_table[i];
- }
如果需要建立的表很大,那么可以通过一个初始化函数,在循环外临时生成表格。
|