[轉載]學程式設計的人不能不看的好文章
以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);
}
沒有留言:
張貼留言