- 算法設(shè)計(jì)與分析:基于C++編程語(yǔ)言的描述
- 王秋芬 趙剛彬編著
- 229字
- 2024-12-13 09:52:13
1.4.2 n的階乘
計(jì)算n!的公式可以定義為

顯然,這是一個(gè)以遞歸技術(shù)定義的公式,在描述階乘算法時(shí)又用到階乘這一概念,因而很自然想到使用遞歸來(lái)實(shí)現(xiàn)該問(wèn)題,遞歸的停止條件是n=0。
遞歸算法描述如下:
long long fun(int n) { if(n<0) cout<<"Illegal number!"<<endl; else if(n==0) return 1; else return n*fun(n-1); }
以n=3為例,fun(3)的運(yùn)行過(guò)程如圖1-2所示。
可見(jiàn),fun()在運(yùn)行中不斷調(diào)用自身從而降低規(guī)模,當(dāng)規(guī)模降為0時(shí),即遞推到fun(0),此時(shí)滿足停止條件則停止遞推,開(kāi)始回歸(返回調(diào)用算法)并進(jìn)行計(jì)算,直到遞推開(kāi)始處,即求得fun(3)的值。

圖1-2 fun(3)的運(yùn)行過(guò)程示意圖
推薦閱讀
- 單片機(jī)C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)100例:基于STC8051+Proteus仿真與實(shí)戰(zhàn)
- 算法訓(xùn)練營(yíng):入門篇(全彩版)
- HTML5 移動(dòng)Web開(kāi)發(fā)從入門到精通(微課精編版)
- Learning RabbitMQ
- Raspberry Pi for Secret Agents(Third Edition)
- Java持續(xù)交付
- Web全棧工程師的自我修養(yǎng)
- 網(wǎng)店設(shè)計(jì)看這本就夠了
- MySQL數(shù)據(jù)庫(kù)管理與開(kāi)發(fā)實(shí)踐教程 (清華電腦學(xué)堂)
- HTML5+CSS3+JavaScript Web開(kāi)發(fā)案例教程(在線實(shí)訓(xùn)版)
- Spring Boot企業(yè)級(jí)項(xiàng)目開(kāi)發(fā)實(shí)戰(zhàn)
- ServiceNow:Building Powerful Workflows
- Illustrator CC平面設(shè)計(jì)實(shí)戰(zhàn)從入門到精通(視頻自學(xué)全彩版)
- IDA Pro權(quán)威指南(第2版)
- ASP.NET 4.0 Web程序設(shè)計(jì)