劍指offer系列37 求1 2 3 n

2022-04-03 02:12:32 字數 1675 閱讀 5298

2019-07-23

11:44:01

從這個題開始,我有些題目標題前面會加乙個※號,以表示此題目比較重要,要多複習其中的知識點。

這個題就1到n的加法,不能用乘數法、迴圈語句和條件語句。第乙個方法就是把想要的計算放進建構函式,注意這裡算累計和所以要一直更新值,因此一定要用靜態成員函式。

1

class

solution

8static

void

reset()913

static unsigned int

sumfind()

1417 unsigned int sum_solution(int

n) 24

private:25

static unsigned int

n;26

static unsigned int

sum;

2728

};29 unsigned int solution::n = 0;//

靜態資料成員必須初始化

30 unsigned int solution::sum = 0;

第二種方法:用虛函式。其實用的思想還是遞迴,只不過以虛函式的形式呈現出來。

1 #include2

using

namespace

std;

3class

solution 8};

9 solution *arr[2

];10

class solution2: public

solution

1116

};17

intmain()

18

第三種解法:使用函式指標的方法讓指標選擇相應的函式,還是遞迴的思路

1 #include2

using

namespace

std;

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

宣告乙個:返回值為指向unsigned int型別的指標型別,引數為unsigned int型別,的函式

4 unsigned int so1(unsigned int n)//

相當於遞迴終止條件

58 unsigned int so2(unsigned int n)//

相當於遞迴迴圈函式

9;//

宣告函式陣列f,f的每乙個元素是乙個函式

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

1314

class

solution

19};

20int

main()

21

第四個:使用模板的方法

1 #include2

using

namespace

std;

3 templateint n> struct

sum44;

6};7 template<> struct sum4<1>8;

10};

11int

main()

12

這段**沒寫注釋因為模板我也不是很熟悉。這乙個題雖然看起來不難,不過涉及到的這些知識點我確實以前掌握的不熟悉。

劍指offer 遞迴 求1 2 3 n

題目描述 求1 2 3 n,要求不能使用乘除法 for while if else switch case等關鍵字及條件判斷語句 a?b c 思路 使用遞迴f n f n 1 n,但是不能使用if進行遞迴出口的控制,因此利用python中and的屬性,即and判斷都為真的話輸出and後面的那個數字。...

劍指Offer面試題37

這題的難點在於理解單鏈表中如果有第乙個公共節點,那麼其後的所有節點都重合。public class listnode public class solution 記錄它們的長度可以不用兩個輔助棧,讓長的先走,可以同時到鏈尾 int nlen1 getlistlength phead1 int nle...

《劍指offer》系列 1

最近一直在看劍指offer,這上面的題目都是比較考察程式設計能力的,打算做個記錄,把寫過的 儲存下來 1.實現乙個string類 面試官的考察點應該在以下幾點 1.模板類的書寫 2.對於賦值函式考察的幾點 1 是否返回引用,因為只有返回引用,才能連續的進行賦值 2 引數是否是常量 3 是否是自身賦值...