[問題] 如何使for迴圈遞增{}內的值一正一負一正一負

看板C_and_CPP作者 (尬尬烏拉拉)時間15年前 (2010/10/04 00:52), 編輯推噓3(3020)
留言23則, 8人參與, 最新討論串1/1
其實想要做的是一個分式的運算 算出來的值是一正一負 ex: 1 3 5.... ▁+ ▁ - ▁ 1! 3! 5! .... for(i=1;i<=45;i=i+2) { down=1; for(j=1;j<=i;j=j+1) { down=down*j; } up=i; total=total+up/down; cout<<"total:"<<total<<endl; 想問問如何使他一正一負呢 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.125.190.93

10/04 00:55, , 1F
一正一負的話,可以乘上 (-1) 的 j 次方?
10/04 00:55, 1F

10/04 00:59, , 2F
一直乘-1不就一正一負一直循環了
10/04 00:59, 2F

10/04 01:00, , 3F
喔對齁~~謝謝你給我這個這麼關鍵的提示
10/04 01:00, 3F

10/04 01:01, , 4F
二樓說的是 XD 之前考試都寫 (-1)^j 所以沒想到更簡單的
10/04 01:01, 4F

10/04 01:06, , 5F
http://codepad.org/gnfIcmXC 45階用整數會炸掉, 你要
10/04 01:06, 5F

10/04 01:07, , 6F
注意儲存的型態, 還有分開算是比較好管理, 但是跑起來
10/04 01:07, 6F

10/04 01:07, , 7F
有使用double
10/04 01:07, 7F

10/04 01:07, , 8F
會比較慢, 這第i項的分母可以留到第i+1項的時候重複
10/04 01:07, 8F

10/04 01:08, , 9F
使用, double 算到太大後面的位數也會不見, 也是有溢
10/04 01:08, 9F

10/04 01:09, , 10F
位的問題, 不過應該是不用算到後面那幾項才對
10/04 01:09, 10F

10/04 01:09, , 11F
好的 仍謝謝各位的分享 今天可能要休息了.. 謝謝大家
10/04 01:09, 11F

10/04 01:10, , 12F
有了方向又長小知識 以後應該會很常來了^^
10/04 01:10, 12F

10/04 01:22, , 13F
& (~0x00) ??
10/04 01:22, 13F

10/04 07:13, , 14F
樓上等於 &(-1) 等於什麼都沒做...
10/04 07:13, 14F

10/04 08:20, , 15F
= =請無視上面, 改 down=(!down)&(0x01)?? 會比較快??
10/04 08:20, 15F

10/04 08:22, , 16F
^^^^^^^ +1
10/04 08:22, 16F

10/04 23:50, , 17F
int sign=1; 之後除了第一/三項, 後面每次都做
10/04 23:50, 17F

10/04 23:51, , 18F
sign = (~sign) + 1; 這樣就可以去掉logic op了@_@"
10/04 23:51, 18F

10/04 23:54, , 19F
等等, 每次都 sign *= -1; 就好了, 看到推文就不自覺的
10/04 23:54, 19F

10/04 23:54, , 20F
想用bit operation來做了....XD
10/04 23:54, 20F

10/04 23:55, , 21F
然後才看到2F c大就已經提到了....Orz
10/04 23:55, 21F

10/05 14:49, , 22F
sign = - sign ; 呢? XD
10/05 14:49, 22F

10/05 22:45, , 23F
忽然覺得自己是笨蛋....Q_Q~
10/05 22:45, 23F
文章代碼(AID): #1CgBJ21V (C_and_CPP)