題目:求1+2..+n,要求不能使用乘除法、for/while/if/else/switch/case等關鍵字及條件判斷語句(a?b:c)
方法1: 利用建構函式,static ,構造n個例項。
方法2:利用虛函式求解。當n不為0時,呼叫函式base::sum() ,當n為0時,呼叫函式derived::sum()
方法3:利用函式指標求解。類似虛函式
方法4:利用模板型別求解
#includeusing namespace std;
//利用建構函式
class temp
static void reset()
static unsigned int getsum()
private:
static unsigned int n;
static unsigned int sum;
};unsigned int temp::n=0;
unsigned int temp::sum=0;
int sum_solution1(unsigned int n)
//利用虛函式求解
class base
} ;base *array[2];
class derived : public base
};int sum_solution2(unsigned int n)
//方法3:利用函式指標求解
typedef unsigned int (*fun)(unsigned int);
unsigned int sum_solution3_terminator(unsigned int n)
unsigned int sum_solution3(unsigned int n)
; return n+f[!!n](n-1);
}//方法4:利用模板型別求解
templatestruct sum_solution4;};
template<> struct sum_solution4<1>;};
template<> struct sum_solution4<0>;};
int main()
劍指offer 面試題46 求1 2 n
題目 求1 2 n,要求不能使用乘除法 for while if else switch case等關鍵字及條件判斷語句 a?b c 方法一 利用建構函式求解。程式不讓使用迴圈,但是我們可以以另一種方式實現迴圈,譬如利用建構函式,不斷的呼叫建構函式,函式的執行語句放在建構函式內部,當我們建立n個類的...
劍指offer 學習筆記 求1 2 n
面試題64 求1 2 n。不能用乘除法 for while if else switch case等關鍵字及條件判斷語句 包括a?b c 法一 建構函式求解。迴圈讓相同的 迴圈執行n次,我們也可以不用迴圈語句完成,先定義乙個型別,接著建立n個該型別的物件,那麼這個型別的建構函式就會被呼叫n次 inc...
劍指offer刷題 求1 2 n
題目 求1 2 n,要求不能使用乘除法,for while if else switch case等關鍵字及條件判斷語句 a?b c 要求不能使用乘除和一些語句,因此我們可以設計遞迴思路,並且用位運算子來判斷是否到達遞迴終止的條件。另外,我們可以用c 建構函式來設計出一種思路,具體見 class s...