如何不用迴圈實現1+...+n?這道題目是一道面試題,至於為什麼要這樣問,用迴圈解決1加到n豈不是更高效,也是為了鍛鍊一下思維,看你能想到幾種
第一種:遞迴實現
#includeusing namespace std;
int add(int x)
return x + add(x - 1);
}int main()
第二種:模板實現
#include#includeusing namespace std;
template//非型別的函式模板引數
class add;};
template<> //特化
class add<1>;};
int main()
這裡用模板也類似遞迴,在最後把value的值特化為1,就可以一直加到100
第三種:利用建構函式實現
cout < 因為在類裡把n和sum宣告為靜態成員,靜態變數儲存到靜態全域性區#includeusing namespace std;
class test
private:
static int n;
static int sum;
};int test::n = 0;
int test::sum = 0;
int main()
{ int n = 100;
test *a = new test[n];
delete a;
a = null;
中。所以
靜態變數隨著類的出現而出現,隨著類的消失而消失。(
非靜態成員變數隨著物件的出現而出現,隨著物件的消失而消失)new有兩個作用,呼叫建構函式和開闢空間,new
test方括號裡是幾,就呼叫幾次建構函式,在建構函式裡就對sum做了加法。從而實現1+..+n。
三種方法實現選擇問題
一 選擇問題 選擇問題 selection problem 是求一陣列 n個數 中第k k n 個最小元素的問題。二 三種方法實現 1.確定演算法 lomuto劃分 hoare劃分 2.非確定演算法 概率演算法 sherwood演算法 三 lomuto劃分1 include include usin...
三種方法實現CSS三欄布局
本文由雲 社群發表 本文會分別介紹三種css實現三欄布局的方法,可在瀏覽器中開啟檢視效果 實現方法 需要左欄向左浮動,右欄向右浮動,中間設左右margin來撐開距離 doctype html en utf 8 css實現三欄布局1 title text css body left middle ri...
三種方法實現CSS三欄布局
本文由雲 社群發表 本文會分別介紹三種css實現三欄布局的方法,可在瀏覽器中開啟檢視效果 實現方法 需要左欄向左浮動,右欄向右浮動,中間設左右margin來撐開距離 lang en charset utf 8 css實現三欄布局1title type text css body left middl...