//1 double Poly(double a[], double x, int degree) { long int i; double result = a[0]; double xpwr = x; for(i = 1; i <= degree; ++i){ redsult += a[i] * xpwr; xpwr = x * xpwr; } return result; }
//Horner's method double Polyh(double a[], double x. int degree) { long int i; double result = a[degree]; for(i = degree - 1; i >= 0; --i){ result = a[i] + x * result; } return result; }
同样的事情, 递归做起来就是比迭代神奇. 从代码上看, 递归有着更少的加法和乘法运算, 所以从效率上说, 递归是比迭代的效率......低的.
为什么呢? 假设机器猫和火影每一集有相同的信息量, 那么必然火影播一集所需要的时间更长, 为啥呢? 因为火影每集都有冗长的前情回顾, 回忆啊回忆啊就把时间回忆掉了. 一个道理, 每次迭代都是在做做相同的动作, 只是材料不一样了; 而每次递归都要把之前的步骤再来一遍, 所以一开始迭代和递归的效率区别还不明显, 但是当执行得越来越远的时候, 机器猫都把道具亮出来了, 火影还沉浸在回忆里呢.
以上.