看板 rikaka
作者 標題 [algo] 寫一個函數計算當參數為 n(n很大) 時的值 1-2+3-4+5-6+7……+n
時間 2012年04月05日 Thu. PM 05:46:16
http://www.vixual.net/blog/archives/99
realtek
其實我一開始就想到版本3
BUT這個版本3是有這麼好嗎? @@
如果一開始就寫版本3, interviewer就不會挑剔嗎
版本1
long fn(long n) {
long temp=0;
int i,flag=1;
if(n<=0) {
printf("error: n must > 0);
exit(1);
}
for(i=1;i<=n;i++) {
temp=temp+flag*i;
flag=(-1)*flag;
}
return temp;
}
----------------------------------
版本2
long fn(long n) {
long temp=0;
int j=1,i=1,flag=1;
if(n<=0) {
printf("error: n must > 0);
exit(1);
}
while(j<=n) {
temp=temp+i;
i=-i;
i>0?i++:i--;
j++;
}
return temp;
}
----------------------------------
版本3
long fn(long n) {
if(n<=0) {
printf("error: n must > 0);
exit(1);
}
if(0==n%2)
return (n/2)*(-1);
else
return (n/2)*(-1)+n;
}
--
※ 作者: rikaka 時間: 2012-04-05 17:46:16
※ 看板: rikaka 文章推薦值: 0 目前人氣: 0 累積人氣: 312
回列表(←)
分享