面試題64 求1 2 n的值

2021-10-05 21:32:40 字數 683 閱讀 5057

求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(a?b:c)。

考察點:類的基礎知識和概念;發散思維。

方法1:利用虛函式求解。定義兩個函式,乙個充當遞迴函式,乙個充當終止遞迴的情況。二選一的話用布林變數。true(1)呼叫第乙個,false(0)呼叫第二個。將數值變數轉化為布林變數,對n進行兩次反運算就可。

class a;

a* array[2];//類a的兩個指標物件

class a

};class b :public a

};class solution

};方法2:利用建構函式。建立n個型別例項,那麼建構函式就會呼叫n次。

class temp //建構函式中進行運算

static void reset() //清空

static unsigned int getsum() //返回結果

private:

static int n;

static int sum;

};int temp::n = 0;

int temp::sum = 0;//類外初始化靜態成員變數

class solution

};方法3:遞迴,短路計算。

class solution

};

面試題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 這個...

面試題64 求1 2 n

求 1 2 n 要求不能使用乘除法 for while if else switch case等關鍵字及條件判斷語句 a?b c 示例 1 輸入 n 3 輸出 6 示例 2 輸入 n 9 輸出 45 限制 1 n 10000這道題目簡直是喪心病狂,基本上什麼都不讓用,只讓用加減法。不讓用迴圈最直接的...