1 回答

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