日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

递归初识

發(fā)布時間:2023/12/29 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 递归初识 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、什么是遞歸

所謂遞歸,簡單點(diǎn)來說,就是一個函數(shù)直接或間接調(diào)用自身的一種方法每調(diào)用一次就進(jìn)入新的一層。它通常把一個大型復(fù)雜的問題層層轉(zhuǎn)化為一個與原問題相似的規(guī)模較小的問題來求解。遞歸函數(shù)必須有結(jié)束條件。當(dāng)函數(shù)在一直遞推,直到遇到結(jié)束條件后返回,所以遞歸要有兩個要素,結(jié)束條件與遞推關(guān)系

二、遞歸的簡單應(yīng)用

?第一個人的年齡為十歲,第二個人的年齡比第一個人年齡大兩歲,以此類推,求第五個人的年齡;

#include <stdio.h> int Age(int n) {if(n==1)//第一個人的年齡{return 10;}else{return Age(n-1)+2;//遞歸過程,自己調(diào)用自己,終止條件n=1} } int main() {printf("%d\n",Age(5));return 0; }

三、遞歸與棧的關(guān)系

遞歸在棧上開辟空間,棧的空間大約1M左右。

常常聽到 “遞歸的過程就是出入棧的過程”,這句話怎么理解?我們以上述代碼為例,取?n=5,則過程如下:

  • 當(dāng)n=5時,Age(5)調(diào)用了Age(4),Age(4)又接著調(diào)用Age(3),Age(3)又接著調(diào)用Age(2),Age(2)又接著調(diào)用Age(1),直到遇到Age(1)結(jié)束,這個過程都是入棧;
  • 因 1 是遞歸結(jié)束條件,故不再入棧,此時棧高度為5,也就是所謂的遞歸深度;
  • Age(1)做完,出棧,而Age(1)做完意味著Age(2)也做完,同樣進(jìn)行出棧,重復(fù)下去,直到所有的都出棧完畢,遞歸結(jié)束。

如下圖:

四、遞歸總結(jié)

1、當(dāng)函數(shù)自己調(diào)用自己時,系統(tǒng)將自動把函數(shù)中當(dāng)前的變量和形參暫時保留起來,在新一輪的調(diào)用過程中,系統(tǒng)為新調(diào)用的函數(shù)所用到的變量和形參開辟另外的存 儲單元(內(nèi)存空間)。每次調(diào)用函數(shù)所使用的變量在不同的內(nèi)存空間。

2、遞歸調(diào)用的層次越多,同名變量的占用的存儲單元也就越多。一定要記住,每次函數(shù)的調(diào)用,系統(tǒng)都會為該函數(shù)的變量開辟新的內(nèi)存空間。

3、當(dāng)本次調(diào)用的函數(shù)運(yùn)行結(jié)束時,系統(tǒng)將釋放本次調(diào)用時所占用的內(nèi)存空間。程序的流程返回到上一層的調(diào)用點(diǎn),同時取得當(dāng)初進(jìn)入該層時,函數(shù)中的變量和形參 所占用的內(nèi)存空間的數(shù)據(jù)。

4、所有遞歸問題都可以用非遞歸的方法來解決,但對于一些比較復(fù)雜的遞歸問題用非遞歸的方法往往使程序變得十分復(fù)雜難以讀懂,而函數(shù)的遞歸調(diào)用在解決這類 問題時能使程序簡潔明了有較好的可讀性;但由于遞歸調(diào)用過程中,系統(tǒng)要為每一層調(diào)用中的變量開辟內(nèi)存空間、要記住每一層調(diào)用后的返回點(diǎn)、要增加許多額外的 開銷,因此函數(shù)的遞歸調(diào)用通常會降低程序的運(yùn)行效率。

遞歸的優(yōu)點(diǎn):代碼簡潔,可讀性高。

遞歸的缺點(diǎn):一般情況下空間復(fù)雜度較高,運(yùn)行效率降低。

?

  

  

  

  

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的递归初识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。