題目:求1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字以及條件判斷語句(a?b:c)。
解法一:利用建構函式求解
建立乙個類,設定兩個靜態變數i和sum,並在建構函式中對i++,sum+=i,每次建立乙個類的物件時都會呼叫建構函式,由於成員變數又是靜態的,所以每次i都加1,sum用來儲存每次加上i之後的總和,求1到n的總和就是建立n個物件,然後將sum的值返回即可。
#include using namespace std;
class temp
//初始化
static void reset()
//獲取總和
static int getsum()
private:
//設定為static的
static unsigned int i;
static unsigned int sum;
};unsigned int temp::i=0;
unsigned int temp::sum=0;
int getsum(int n)
int main()
public static int getsum(int n) };
class b: public a
};int solution2_sum(int n)
1.建立父類a,編寫sum方法。
2.建立子類b,繼承a並重寫sum方法。
3.建立乙個陣列,下標為0的儲存a類物件,下標為1儲存b類物件
4.呼叫b類的sum方法並傳入n,根據!!n判斷n是否為0,不為0一直呼叫b的sum方法進行遞迴求和,當n為0的時候呼叫a的sum方法返回0
解法三:利用函式指標求解
劍指offer 面試題46 求1 2 n
題目 求1 2 n,要求不能使用乘除法 for while if else switch case等關鍵字及條件判斷語句 a?b c 方法一 利用建構函式求解。程式不讓使用迴圈,但是我們可以以另一種方式實現迴圈,譬如利用建構函式,不斷的呼叫建構函式,函式的執行語句放在建構函式內部,當我們建立n個類的...
面試題64 求1 2 n
求1 2 n,要求不能使用乘除法 for while if else switch case等關鍵字及條件判斷語句 a?b c 利用 和 的短路規則,形成if的效果,再用遞迴形成迴圈的效果,實現求和。觀察求和公式 package com.wsy public class main public st...
面試題64 求1 2 n
面試題64 求1 2 3 n,要求不能使用乘除法 for while if else switch case等關鍵字及條件判斷語句 a?b c a b a 為 true,則返回表示式 b 的 bool 值 a 為 false,則返回 false class solution a 這個是宣告。a 這個...