面試題46 求1 2 n

2021-07-02 04:22:05 字數 894 閱讀 9325

題目:求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 這個...