亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

解鎖即可觀看《物聯網/嵌入式工程師》完整課程視頻

物聯網/嵌入式工程師

重磅升級:新增硬件電路設計與實戰,讓你軟硬通吃,同級PK無敵!行業風口、政策傾斜,新晉熱門高薪不內卷!0基礎一站式就業完整路徑,搶占先發優勢!

【第1周】邁進供不應求的物聯網/嵌入式行業大門
【第2周】C語言進階-編程思想
【第3周】C語言高級進階
【第4周】C語言項目實戰與《階段筆試》
【第5周】數據結構-線性結構、非線性結構等
【第6周】排序與復雜度&數據結構項目實戰
【第7周】Shell編程和Makefile工程管理
【第8周】Linux文件IO和標準IO
【第9周】Linux下文件操作項目實踐與階段評測
【第10周】Linux 多進程、多線程、IO模型
【第11周】Linux 項目實戰-實現并發服務器模型與企業筆試
【第12周】網絡基礎和UDP Socket編程
【第13周】TCP Socket編程和WireShark抓包分析
【第14周】網絡編程項目實戰-網絡視頻監控與企業筆試
【第15周】從C到C++
【第16周】軟件設計模式與C++11新特性
【第17周】項目實戰-C++語言實現五子棋游戲與企業筆試
【第18周】嵌入式產品人機交互必備-QT框架
【第19周】項目實戰-QT開發音樂播放器
【第20周】智能硬件開發-ARM核介紹和基礎外設
【第21周】智能硬件開發-單片機常用外設
【第22周】stm32芯片-智能硬件項目實戰與企業筆試
【第23周】大廠必備- linux內核與文件系統移植
【第24周】嵌入式開發-系統移植-bootloader、yocto
【第25周】嵌入式底層核心技能-Linux設備驅動初級
【第26周】嵌入式底層核心技能-Linux設備驅動中級
【第27周】嵌入式底層核心技能-Linux設備驅動高級1
【第28周】嵌入式底層核心技能-Linux設備驅動高級2
【第29周】智能家居項目實戰之Linux智能網關端開發
【第30周】智能家居項目實戰之STM32單片機設備端開發
【第31周】人臉指紋識別考勤機設計與實戰
【第32周】硬件電路設計-電路基礎知識
【第33周】STM32最小系統 - 硬件電路設計實戰項目(一)
【第34周】CAN總線分析儀 - 硬件電路設計實戰項目(二)
【第35周】4路輸入輸出控制器 - 硬件電路設計實戰項目(三)
【第36周】8路邏輯分析儀 - 硬件電路設計實戰項目(四)
【第37周】項目答辯和就業指導&獨立開發階段-三大熱門領域項目
章節
問答
課簽
筆記
評論
占位
占位

我調我自己:函數的遞歸調用

在 C++ 中,可以在一個函數中調用另外一個函數,那么,函數可以自己調用自己嗎? 例如:
void func()
{
    func();
}
C++ 本身其實并不禁止我們這樣去做,并且還給這種調用方式起了一個名字,叫做遞歸調用。
 
執行上述的代碼,發現程序被卡住了,好像永遠不會執行完。仔細看一下這個程序,就會發現其實程序陷入到了一個無限的自我循環當中,而且這種情況比一個死循環還要糟糕。因為每一次函數的調用都會導致在棧上分配新的空間,而因為函數不會退出,所以棧空間會被一直分配下去,直到??臻g被用完,被操作系統殺死。
 
所以,如果要使用這種自己調用自己的方式,就需要滿足一定的條件。已經有前人為我們總結出了遞歸調用的三要素,如下:
 
1. 遞歸的終止條件是什么?
這是非常重要的,在遞歸中,我們必須要設計好這一點,那就是遞歸什么時候停止。否則就會像前面的例子一樣,直接爆棧。
 
2. 遞歸被分解后最基本操作是什么?
遞歸非常適合層級調用關系,每一層都執行相同的操作,這個要素,就是要提取出遞歸最核心的要素。
 
3. 遞歸調用傳遞的參數
這里傳遞的參數其實除了參數列表,還包括返回值。參數列表表示給下一層調用需要傳遞什么,返回值表示上一層調用需要返回什么。
接下來利用遞歸來求一個數的階乘,首先來分析一下問題,假如要求計算 5 的階乘,實際上是在進行以下算式:
 
我們可以將其分解成遞歸,如下:
 
可見,每一次遞歸的核心操作就是n = n * (n - 1)
而終止條件就是n == 1
由此,我們可以寫出以下遞歸函數
int fact(int n)
{
    if(n==1) {
        return 1;
    }
    else {
        return n * fact(n-1);
    }
}

int main(int argc,char **argv)
{
    int x = 5;
    int res = fact(x);
    printf("%d\n",res);

    return 0;
}
利用遞歸的特性,可以很簡單得處理一些利用循環特別復雜的問題,例如,遍歷文件夾,遍歷二叉樹等。靈活使用遞歸,將帶來極大的技術提升。

任務

?不會了怎么辦
||

提問題

寫筆記

公開筆記
提交
||

請驗證,完成請求

由于請求次數過多,請先驗證,完成再次請求

加群二維碼

打開微信掃碼自動綁定

您還未綁定服務號

綁定后可得到

  • · 粉絲專屬優惠福利
  • · 大咖直播交流干貨
  • · 課程更新,問題答復提醒
  • · 賬號支付安全提醒

收藏課程后,能更快找到我哦~

使用 Ctrl+D 可將課程添加到書簽

邀請您關注公眾號
關注后,及時獲悉本課程動態

舉報

0/150
提交
取消
全部 精華 我要發布
全部 我要發布
最熱 最新
只看我的

手記推薦

更多

本次提問將花費2個積分

你的積分不足,無法發表

為什么扣積分?

本次提問將花費2個積分

繼續發表請點擊 "確定"

為什么扣積分?