有限制條件的求1 2 n

2021-07-13 11:39:14 字數 1044 閱讀 5143

//求1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字

//及條件判斷語句(a?b:c)

//解法1:利用建構函式求解。關鍵是static的應用。

class temp

//可以用加法。。

static void reset()

static unsigned int getsum()

};unsigned int temp::n = 0; //在類中不能對static資料成員進行初始化,要初始化的話必須在類外進行定義!

unsigned int temp::sum = 0;

unsigned int mysum0(unsigned int n)

//解法2:利用虛函式求解

class a

};a* array[2];

class b : public a

};unsigned int mysum1(unsigned int n)

//解法3:利用函式指標求解,如果環境是純c,不能用虛函式類之類的,用函式指標。

typedef unsigned int (*fun) (unsigned int);

unsigned int mysum2_terminator(unsigned int n)

unsigned int mysum2(unsigned int n)

; return n + f[!!n](n - 1);

}//解法4:利用模板型別求解

template struct mysum3;};

template <> struct mysum3<1>;};

//mysum<100>::n就是1+2+...+100的結果,缺點:n不能動態輸入,且n值不能太大,即遞迴不能太深

#include "iostream"

using namespace std;

int main()

這道題真是太棒了。需要對很多概念很深刻的理解,然後還要靈活應用。

求1 2 n 很多限制條件

題目 求1 2 n,要求不能使用乘除法 for while if else switch case等關鍵字以及條件判斷語句 a?b c 分析 這道題沒有多少實際意義,因為在軟體開發中不會有這麼 的限制。但這道題卻能有效地考查發散思維能力,而發散思維能力能反映出對程式設計相關技術理解的深刻程度。通常求...

微軟100題 求1 2 n

題目 求1 2 n,要求不能使用乘除法 for while if else switch case等關鍵字以及條件判斷語句 a?b c package test 題目 求1 2 n,要求不能使用乘除法,for,while,if,else,switch,case,條件判斷語句 a?b c author...

求 1 2 n 有趣的短路原則

求1 2 n,要求 不能使用 乘除法 for while if else switch case等關鍵字及條件判斷語句 a?b c c 函式形式為int sumnums int n 本來是乙個很簡單的問題,但是加上不准使用這些語句的限制,瞬間就變得有些艱難。我們來思考,不能用迴圈,也不能用乘除,怎麼...