簡單思考一下,所有的奇數和偶數構成了自然數,對於奇數我們可以用2n + 1表示,而偶數我們可以用2n表示。所以我們可以簡單的認為任何乙個正整數都可以用2的n次冪來表示。事實上我們可以進一步看這個問題:如何把乙個十進位制數轉化為二進位制數。一般的方法是把乙個十進位制數不斷除以2,直到商為零,依次寫下餘數。所以開始的問題也就解決了。下面我們用**來實現一下這個偉大的過程。
這裡我們找乙個十分巨大的範圍也就是冪小於200的情況。然後不斷除以2的i次冪,直到我們發現餘數不為零,然後第i- 1次冪為乙個2的冪項,直到最後。整個來說就是乙個不斷除以2的過程。
void
findserise
(long
int number)
i +=1
;}}
還可以使用遞迴來實現這一過程,請看**。
void
findserise2
(long
int num,
int count)
else
}
這個地方額外引入了乙個形參變數count用於記錄2的冪。開始呼叫時傳入count=0。從這段**裡可以看出冪的累加過程,因為count是不會在執行過程中置零的而是乙個不斷累加的量,這也與十進位制轉二進位制時2的指數不斷變大的邏輯相符合。這時可能有人會問了,如果count不置零,那冪的值不會加重嗎?答案是不會的,我們可以先在腦海中假設有一列2的冪的和,在每次進行除法操作的時候我們為每乙個項都進行了除法操作,所以count對於每一項都是累加的,只是中間因為有餘數不為零的情況需要單獨列出該項而已。 一元多項式的表示及相加
符號多項式的操作,已經成為表處理的典型用例。我們對多項式採用順序儲存結構,可以只儲存每項係數,指數隱含在係數的序號裡。在這種情況下,如果多項式的次數很高且變化很大,那麼便很難來確定順序儲存的最大長度,另外對記憶體空間也極為浪費。一般情況下,對於那些多項式的次數很高,但項數不多的多項式我們可以將一元n...
一元多項式的表示和相加
一元多項式的表示和相加是資料結構 c語言 中的乙個簡單的問題,這裡我們用c 的一些東西來實現它。簡潔版 首先是表示多項式,多項式有一些列的單項組成,每一項都有係數和指數兩個量,考慮到多項式的長度和指數的不確定性,顯而易見,應該使用鍊錶來儲存它。由上面的敘述很容易得到單項的結構 struct poly...
一元多項式的表示和相加
一元多項式 p x p 0 p1 x p2 x2 pnx n 由n 1個係數唯一確定。則在計算機中可用線性表 p0 p1,p2,p n 表示。既然是線性表,就可以用順序表和煉表來實現。兩種不同實現方式的元素型別定義如下 typedef sturct elemtype typedef sturct p...