函數(shù)中是有返回的,當(dāng)cur=n的時候,if條件分支中有return。此時,函數(shù)已經(jīng)遞歸到最底層,然后再逐層向上返回。否則,就是cur+1,然后再往下遞歸。
10年積累的網(wǎng)站設(shè)計、成都網(wǎng)站制作經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先做網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有香洲免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
首先是猜想,主流平臺上,函數(shù)返回都是通過某個通用寄存器返回,x86平臺是eax,arm是r0,所以猜想即使是void返回,如果硬是要得到返回值的話,應(yīng)該是得到返回那一刻該寄存器的值。
C語言的函數(shù)如果沒有return,那一定就是一個返回值為void的函數(shù),表示不返回任何值,只是函數(shù)的代碼返回了,也就是執(zhí)行在匯編層面上的ret指令來結(jié)束函數(shù)的調(diào)用。
return 可以分兩種情況:有返回值的函數(shù) int function1(){ return 1; --必須要return 才能有返回值。
對的,C語言中函數(shù)句柄(指針)指向一個地址,如果該函數(shù)沒有Return,那么函數(shù)句柄就沒有被賦值,會返回句柄指向內(nèi)存的值,表現(xiàn)出一個隨機的數(shù)。
1、遞歸函數(shù)和返回值沒有任何關(guān)系。是否能夠遞歸,與你使用的語言有關(guān)系,C是支持遞歸調(diào)用的,那么你就可以使用遞歸函數(shù),有的語言(記不清了,貌似basic或者pascal)不支持遞歸調(diào)用,那么使用這些語言的時候就無法進(jìn)行遞歸調(diào)用。
2、1,存在遞歸調(diào)用 2,有退出條件 3,有return值。這是因為遞歸調(diào)用按照棧的方式,在沒有達(dá)到退出條件的時候后面的函數(shù)也就無法執(zhí)行return語句,這樣就實現(xiàn)了每一層的return語句與這層函數(shù)相對應(yīng)。
3、不是必須有返回值。如果沒有返回值類型名為void。
4、C語言中的函數(shù)可以遞歸調(diào)用,即:可以直接(簡單遞歸)或間接(間接遞歸)地自己調(diào)自己。要點:C語言函數(shù)可以遞歸調(diào)用。可以通過直接或間接兩種方式調(diào)用。目前只討論直接遞歸調(diào)用。
1,存在遞歸調(diào)用 2,有退出條件 3,有return值。這是因為遞歸調(diào)用按照棧的方式,在沒有達(dá)到退出條件的時候后面的函數(shù)也就無法執(zhí)行return語句,這樣就實現(xiàn)了每一層的return語句與這層函數(shù)相對應(yīng)。
所以對于有返回值的函數(shù)的遞歸調(diào)用一定要記得加上return。
//為什么不用返回值呢,因為此程序進(jìn)行遞歸后,在最初返回時,eax的值被賦值為100,而之后的回溯過程中,程序并沒有修改eax的值,所以到最后,返回值還是100。這種寫法是會出問題的。應(yīng)寫成。
無返回值的話就是函數(shù)本身無值,只起到處理的作用(輸入、輸出、賦值等),其功能相當(dāng)于由幾個語句構(gòu)成的函數(shù)。通俗理解就是它本身是一段語句。一個函數(shù)的函數(shù)名既是該函數(shù)的代表,也是一個變量。
return true的含義就是“結(jié)束當(dāng)前這個函數(shù)”,僅此而已。之后程序就會回到之前的調(diào)用點的下一步開始繼續(xù)執(zhí)行。你所說的”跳出這一層遞歸還是跳出整個遞歸“只是由你自己程序的寫法決定的,具體需要幾自己判斷。
一個函數(shù)的函數(shù)名既是該函數(shù)的代表,也是一個變量。由于函數(shù)名變量通常用來把函數(shù)的處理結(jié)果數(shù)據(jù)帶回給調(diào)用函數(shù),即遞歸調(diào)用,所以一般把函數(shù)名變量稱為返回值。函數(shù)可以有返回值,只要 return 就可以給出一個。