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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

编程问答

关于C语言中递归的一点点小问题

發(fā)布時(shí)間:2023/12/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于C语言中递归的一点点小问题 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近準(zhǔn)備復(fù)習(xí)考研,慢慢接觸一些細(xì)節(jié)的小問(wèn)題,可能絕大部分人都是知道的,這篇也就是簡(jiǎn)單地總結(jié)下,順便更新下博客= =,可能為新手朋友們更好地理解遞歸。

關(guān)于c語(yǔ)言中遞歸函數(shù)調(diào)用時(shí),遞歸函數(shù)中返回值的問(wèn)題。 eg.1 有變量(n)接受遞歸每層的返回值 int?Fact(int n) { if(n >1) { n *= Fact(n - 1); } return n; } 在這個(gè)求階乘的問(wèn)題中,如果傳入n =4,遞歸調(diào)用的返回值是24。但遞歸函數(shù)每一步是如何返回值的吶? n = 4, n > 1, n = 4 *?Fact(3), 此時(shí)再調(diào)用Fact()函數(shù), 傳入的n為3 n = 3, n > 1, n = Fact(3) = 3 * Fact(2), 此時(shí)再調(diào)用Fact()函數(shù), 傳入的n為2 n = 2, n > 1, n = Fact(2) = 2 * Fact(1), 此時(shí)再調(diào)用Fact()函數(shù), 傳入的n為1 n = 1, n !>1,Fact(1) = 1, return n。此時(shí)n = 4 * 3 * 2 * 1 = 24。 可以看出,遞歸函數(shù)調(diào)用在返回時(shí)是逐級(jí)返回的。 eg.2 無(wú)具體變量接受遞歸每層的返回值 void to_bin(int n) { int r; r = n % 2; if(n >= 2) { to_bin(n / 2); } putchar(r == 0 ? '0' : '1'); return; } 這是一個(gè)將十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制的函數(shù),如果傳入十進(jìn)制數(shù)為10,輸出應(yīng)該為1010 則第一步n = 10, r = 0, n >= 2, 調(diào)用to_bin()函數(shù), 傳入?yún)?shù)為5, 第二步,n = 5, r = 1, n >= 2, 調(diào)用to_bin()函數(shù),傳入?yún)?shù)為2,? 第三步,n = 2, r = 0, n >= 2,調(diào)用to_bin()函數(shù),傳入?yún)?shù)為1, 第四步,n = 1, r = 1, n !>= 2,調(diào)用結(jié)束返回 整個(gè)過(guò)程并不像eg.1中有個(gè)變量n來(lái)接受遞歸過(guò)程的變化,而是每一步都有輸出。 由于遞歸是逐級(jí)返回,所以在最深調(diào)用的層次先返回r = 1,也就是先putchar 1,然后接著返回上層putchar 0,同理最后實(shí)現(xiàn)輸出1010 Summary: 1.當(dāng)函數(shù)調(diào)用自身時(shí),也就是在進(jìn)行遞歸時(shí),系統(tǒng)會(huì)將當(dāng)前的變量以及形參保留起來(lái),在再調(diào)用自身時(shí),系統(tǒng)會(huì)為新的變量和形參開辟新的內(nèi)存空間。 2.當(dāng)前調(diào)用的函數(shù)運(yùn)行結(jié)束時(shí),系統(tǒng)會(huì)釋放這次調(diào)用所占的內(nèi)存空間,并且返回到上一層的調(diào)用點(diǎn),同時(shí)去獲取上一層的變量和形參。 3.遞歸的過(guò)程是逐層進(jìn)行,調(diào)用是從外到里,而返回是從里到外。分有無(wú)變量或參數(shù)來(lái)接受遞歸每層返回的結(jié)果。 大部分是參考c primer plus中的例子加以說(shuō)明,其實(shí)自己調(diào)試會(huì)理解地更好,當(dāng)然分析當(dāng)中有些符號(hào)只是為了方便打的,不規(guī)范,不要太在意。

轉(zhuǎn)載于:https://www.cnblogs.com/7top/p/7245151.html

總結(jié)

以上是生活随笔為你收集整理的关于C语言中递归的一点点小问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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