複製鏈接
請複製以下鏈接發送給好友

類屬編程

鎖定
類屬編程(generic programming) generic是構成庫的另一種方式, 這與傳統的oop是不同的。這類程序庫一般由類屬組件和類屬算法組成,組件和算法通過迭代器組裝起來,組件則對迭代器提供一定的封裝。這種程序庫的優點在於能夠提供比傳統程序庫更靈活的組裝方式,而不損失效率。
中文名
類屬編程
外文名
generic programming
組    成
由類屬組件和類屬算法組成

目錄

類屬編程簡介公式

如果一個數列從第2項起,每一項與它的前一項的比等於同一個非零常數,這個數列就叫做等比數列(geometric progression)。這個常數叫做等比數列的公比(common ratio),公比通常用字母q表示(q≠0)。q=1時,an為常數列。  (1)等比數列的通項公式是:An=A1*q^(n-1)
若通項公式變形為an=a1/q*q^n(n∈N*),當q大於0時,則可把an看作自變量n的函數,點(n,an)是曲線y=a1/q*q^x上的一羣孤立的點。  (2)求和公式:Sn=nA1(q=1) Sn=A1(1-q^n)/(1-q) =(a1-a1q^n)/(1-q)  =(a1-an*q)/(1-q)  =a1/(1-q)-a1/(1-q)*q^n( 即A-Aq^n) (前提:q≠ 1)  任意兩項am,an的關係為an=am·q^(n-m);在運用等比數列的前n相和時,一定要注意討論公比q是否為1. (3)從等比數列的定義、通項公式、前n項和公式可以推出:a1·an=a2·an-1=a3·an-2=…=ak·an-k+1,k∈{1,2,…,n} (4)等比中項aq·ap=ar^2,ar則為ap,aq等比中項。  記πn=a1·a2…an,則有π2n-1=(an)2n-1π2n+1=(an+1)2n+1 另外,一個各項均為正數的等比數列各項取同底數後構成一個等差數列;反之,以任一個正數C為底,用一個等差數列的各項做指數構造冪Can,則是等比數列。在這個意義下,我們説:一個正項等比數列與等差數列是“同構”的。  等比中項定義:從第二項起,每一項(有窮數列和末項除外)都是它的前一項與後一項的等比中 項。  等比中項公式:An/An-1=An+1/An或者(An-1)(An+1)=An^2  (5)無窮遞縮等比數列各項和公式:  無窮遞縮等比數列各項和公式:公比的絕對值小於1的無窮等比數列,當n無限增大時的極限叫做這個無窮等比數列各項的和。  (6)由等比數列組成的新的等比數列的公比:  {an}是公比為q的等比數列  1.若A=a1+a2+……+an B=an+1+……+a2n  C=a2n+1+……a3n 則,A、B、C構成新的等比數列,公比Q=q^n 2.若A=a1+a4+a7+……+a3n-2 B=a2+a5+a8+……+a3n-1  C=a3+a6+a9+……+a3n 則,A、B、C構成新的等比數列,公比Q=q

類屬編程性質

(1)若 m、n、p、q∈N*,且m+n=p+q,則am*an=ap*aq;
(2)在等比數列中,依次每 k項之和仍成等比數列。
(3)“G是a、b的等比中項”“G^2=ab(G≠0)”.
(4)若{an}是等比數列,公比為q1,{bn}也是等比數列,公比是q2,則  {a2n},{a3n}…是等比數列,公比為q1^2,q1^3…  {can},c是常數,{an*bn},{an/bn}是等比數列,公比為q1,q1q2,q1/q2。
(5)等比數列中,連續的,等長的,間隔相等的片段和為等比。
(6)若(an)為等比數列且各項為正,公比為q,則(log以a為底an的對數)成等差,公差為log以a為底q的對數。
(7) 等比數列前n項之和Sn=A1(1-q^n)/(1-q)=A1(q^n-1)/(q-1)=(A1q^n)/(q-1)-A1/(q-1)
(8) 數列{An}是等比數列,An=pn+q,則An+K=pn+K也是等比數列,  在等比數列中,首項A1與公比q都不為零。  注意:上述公式中A^n表示A的n次方。
(9)由於首項為a1,公比為q的等比數列的通向公式可以寫成an*q/a1=q^n,它的指數函數y=a^x有着密切的聯繫,從而可以利用指數函數的性質來研究等比數列。

類屬編程應用

等比數列在生活中也是常常運用的。
如:銀行有一種支付利息的方式——複利
即把前一期的利息和本金加在一起算作本金,再計算下一期的利息,也就是人們通常説的利滾利。按照複利計算本利和的公式:本利和=本金*(1+利率)^存期
小故事:
根據歷史傳説記載,國際象棋起源於古印度,至今見諸於文獻最早的記錄是在薩珊王朝時期用波斯文寫的.據説,有位印度教宰相見國王自負虛浮,決定給他一個教訓.他向國王推薦了一種在當時尚無人知曉的遊戲.國王當時整天被一羣溜鬚拍馬的大臣們包圍,百無聊賴,很需要通過遊戲方式來排遣鬱悶的心情。
國王對這種新奇的遊戲很快就產生了濃厚的興趣,高興之餘,他便問那位宰相,作為對他忠心的獎賞,他需要得到什麼賞賜.宰相開口説道:請您在棋盤上的第一個格子上放1粒麥子,第二個格子上放2粒,第三個格子上放4粒,第四個格子上放8粒……即每一個次序在後的格子中放的麥粒都必須是前一個格子麥粒數目的倍數,直到最後一個格子第64格放滿為止,這樣我就十分滿足了. “好吧!”國王哈哈大笑,慷慨地答應了宰相的這個謙卑的請求.
這位聰明的宰相到底要求的是多少麥粒呢?稍微算一下就可以得出:1+2+2^2+2^3+2^4+……+2^63=2^64-1,直接寫出數字來就是18,446,744,073,709,551,615粒,這位宰相所要求的,竟是全世界在兩千年內所產的小麥的總和!
如果造一個寬四米,高四米的糧倉來儲存這些糧食,那麼這個糧倉就要長三億千米,可以繞地球赤道7500圈,或在日地之間打個來回。
國王哪有這麼多的麥子呢?他的一句慷慨之言,成了他欠宰相西薩·班·達依爾的一筆永遠也無法還清的債。  正當國王一籌莫展之際,王太子的數學教師知道了這件事,他笑着對國王説:“陛下,這個問題很簡單啊,就像1+1=2一樣容易,您怎麼會被它難倒?”國王大怒:“難道你要我把全世界兩千年產的小麥都給他?”年輕的教師説:“沒有必要啊,陛下。其實,您只要讓宰相大人到糧倉去,自己數出那些麥子就可以了。假如宰相大人一秒鐘數一粒,數完18,446,744,073,709,551,615粒麥子所需要的時間,大約是5800億年(大家可以自己用計算器算一下!)。就算宰相大人日夜不停地數,數到他自己魂歸極樂,也只是數出了那些麥粒中極小的一部分。這樣的話,就不是陛下無法支付賞賜,而是宰相大人自己沒有能力取走賞賜。”國王恍然大悟,當下就召來宰相,將教師的方法告訴了他。
西薩·班·達依爾沉思片刻後笑道:“陛下啊,您的智慧超過了我,那些賞賜……我也只好不要了!”當然,最後宰相還是獲得了很多賞賜。