三種方法實現如何不用迴圈實現1 n?

2021-07-30 07:14:12 字數 1022 閱讀 4099

如何不用迴圈實現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

第三種:利用建構函式實現

#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;

cout <

因為在類裡把n和sum宣告為靜態成員,靜態變數儲存到靜態全域性區

中。所以

靜態變數隨著類的出現而出現,隨著類的消失而消失。(

非靜態成員變數隨著物件的出現而出現,隨著物件的消失而消失)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...