1 回答

TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊
這個(gè)代碼的思路是利用遞歸來計(jì)算。其實(shí)只需要?int Solution1(int n) 和?int Sum_Solution(int n) 這兩個(gè)函數(shù)就夠了。
可是這代碼非要把函數(shù)包裝進(jìn) Solution 類,這兩個(gè)函數(shù)就作為成員函數(shù)。
如果把它們聲明為普通成員函數(shù)(沒有static),那么想要調(diào)用這兩個(gè)函數(shù)就必須先實(shí)例化一個(gè) Solution 對(duì)象。原本?Solution?類存在的意義僅僅是包裝下兩個(gè)函數(shù)而已,沒有必要為使用這兩個(gè)函數(shù)來實(shí)例化 Solution 對(duì)象。
所以通常的解決辦法就是把它們聲明為 static 成員,這樣只要通過 Solution 名就可以調(diào)用這兩個(gè)函數(shù)了,不需要先實(shí)例化 Solution。比如這樣調(diào)用:Solution::Sum_Solution(100);
附帶一個(gè)原因就是:代碼中利用了函數(shù)指針,普通的函數(shù)指針只能指向 static 成員函數(shù),所以這兩個(gè)函數(shù)也不能是普通成員函數(shù)。
總之,代碼中必須有這幾個(gè) static 完全是因?yàn)檫@兩個(gè)函數(shù)被包裝成了類的成員函數(shù)。
除非有要求必須把函數(shù)包裝到 Solution 類中(有的刷題測(cè)試系統(tǒng)有要求),不然根本沒必要用到這個(gè)類。
- 1 回答
- 0 關(guān)注
- 1028 瀏覽
添加回答
舉報(bào)