2019-07-23
11:44:01
從這個題開始,我有些題目標題前面會加乙個※號,以表示此題目比較重要,要多複習其中的知識點。
這個題就1到n的加法,不能用乘數法、迴圈語句和條件語句。第乙個方法就是把想要的計算放進建構函式,注意這裡算累計和所以要一直更新值,因此一定要用靜態成員函式。
1class
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 #include2using
namespace
std;
3class
solution 8};
9 solution *arr[2
];10
class solution2: public
solution
1116
};17
intmain()
18
第三種解法:使用函式指標的方法讓指標選擇相應的函式,還是遞迴的思路
1 #include2using
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 #include2using
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 是否是自身賦值...