Update
This commit is contained in:
@@ -44,7 +44,7 @@ int function1(int x, int n) {
|
||||
|
||||
那么就可以写出了如下这样的一个递归的算法,使用递归解决了这个问题。
|
||||
|
||||
```
|
||||
```C++
|
||||
int function2(int x, int n) {
|
||||
if (n == 0) {
|
||||
return 1; // return 1 同样是因为0次方是等于1的
|
||||
@@ -62,7 +62,7 @@ int function2(int x, int n) {
|
||||
|
||||
这个时间复杂度就没有达到面试官的预期。于是又写出了如下的递归算法的代码:
|
||||
|
||||
```
|
||||
```C++
|
||||
int function3(int x, int n) {
|
||||
if (n == 0) {
|
||||
return 1;
|
||||
@@ -101,7 +101,7 @@ int function3(int x, int n) {
|
||||
|
||||
于是又写出如下递归算法的代码:
|
||||
|
||||
```
|
||||
```C++
|
||||
int function4(int x, int n) {
|
||||
if (n == 0) {
|
||||
return 1;
|
||||
@@ -132,7 +132,7 @@ int function4(int x, int n) {
|
||||
|
||||
对于function3 这样的递归实现,很容易让人感觉这是O(logn)的时间复杂度,其实这是O(n)的算法!
|
||||
|
||||
```
|
||||
```C++
|
||||
int function3(int x, int n) {
|
||||
if (n == 0) {
|
||||
return 1;
|
||||
@@ -145,14 +145,12 @@ int function3(int x, int n) {
|
||||
```
|
||||
可以看出这道题目非常简单,但是又很考究算法的功底,特别是对递归的理解,这也是我面试别人的时候用过的一道题,所以整个情景我才写的如此逼真,哈哈。
|
||||
|
||||
大厂面试的时候最喜欢用“简单题”来考察候选人的算法功底,注意这里的“简单题”可并不一定真的简单哦!
|
||||
大厂面试的时候最喜欢用“简单题”来考察候选人的算法功底,注意这里的“简单题”可并不一定真的简单哦!
|
||||
|
||||
如果认真读完本篇,相信大家对递归算法的有一个新的认识的,同一道题目,同样是递归,效率可是不一样的!
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-----------------------
|
||||
* 作者微信:[程序员Carl](https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw)
|
||||
* B站视频:[代码随想录](https://space.bilibili.com/525438321)
|
||||
|
||||
Reference in New Issue
Block a user