Search

10/15/2006

[轉載]學程式設計的人不能不看的好文章


以pow為例,pow簡單好寫,不過常常會忘了有效率的寫法:
1. 最直覺的方法,iterative,一個一個乘,把結果傳回去。
int pow(int base, int power){ 
int result = base;

if(power==0)
return 1;
while(power-->1)
result *= base;

return result;
}

2. 用recusive來做,寫出來的比較容易理解。
int pow(int base, int power){
if (power==0)
return 1;
return base*pow(base, power-1);
}

3. 最後就是第一題考的東西。
int pow(int base, int power){

if(power==0)
return 1;
if(power%2==0)
return pow(base, power/2)*pow(base, power/2);
else
return base*pow(base, power-1);
}

4. 可能再快一點的寫法,不過這不重要了。
int pow(int base, int power){
int t;

if(power==0)
return 1;
if(!(power&1)){
t = pow(base, power/2);
return t*t;
}
else
return base*pow(base, power-1);
}

沒有留言: