1樓:天雲一號
直接返回if判斷num<10,到全部完成後,再返回執行2
2樓:零下一度的沙漠
不會執行語句2 知道遞迴呼叫結束退出後才會執行語句2
在c語言的遞迴函式中,函式前的語句是在最後反過來執行,還是在呼叫語句前就執行呢?
3樓:匿名使用者
d=n%10;++k;
肯定在每次呼叫dtos前執行,
k在main 外定義,是全域性變數,預設賦值0
4樓:匿名使用者
每次呼叫都執行。k是全域性變數不賦值預設為0。
遞迴呼叫自身函式,還會執行後面的語句嗎
5樓:綠巨驢與綠鯉魚
(1)只要一直成立就不會執行(2),當(1)不成立才執行(2)
c語言遞迴函式執行的順序
6樓:凳凳是個大逗比
執行,那兩條語句在void fun(int n)函式的範圍內(大括號內),當最後遞迴出口(y=0)滿足時,會從內層到外層依次執行,顯示出來的那兩條語句最後執行。
7樓:聚將羽球社群
寫遞迴函式第一個想到的就是遞迴什麼時候結束!
遞迴呼叫一層層進入這個你應該是瞭解了,當y等於0的時候,這個時候也是一層一層的往上返回的,一層一層的輸出,二進位制的計算本來就是一個先計算後輸出的,所以你這樣寫的順序是對的。你在紙上寫一寫沒次呼叫的結果就明白執行順序了。
/*這是一個講解遞迴函式的例子*/
#include
void fun(int num)
printf("%d", d);
}int main()
c語言裡,圖中的遞迴函式沒有return,函式呼叫時怎麼返回的?函式執行到最後就會返回嗎
8樓:匿名使用者
函式中是有返回的,當cur=n的時候,if條件分支中有return。
此時,函式已經遞迴到最底層,然後再逐層向上返回。
否則,就是cur+1,然後再往下遞迴。
遞迴函式呼叫如何理解?
9樓:
函式在記憶體中是一個塊,我們呼叫函式時,就是去尋找函式塊的地址,然後執行函式,再回到原來呼叫函式的位置,所謂遞迴,就是函式塊裡有個命令,重新回到函式的頭部,這就像迴圈一樣。調運函式說白了就是前往函式塊的首地址,然後執行地址後面的內容,所以函式可以呼叫自己,也就是可以遞迴
10樓:匿名使用者
也就是直接或間接的呼叫自身的函式
c語言裡遞迴函式裡定義的變數是否會隨著呼叫自身而從新定義?
11樓:仙戈雅
每次遞迴的變數的作用域僅限當次遞迴所擁有,現在你是初學者不懂遞迴內在的原理是很正常的。當你學過資料結構的棧以後,你就會對遞迴有更深入一層的體會。
12樓:與子如初見
相反,會提高程式的執行效率,因為函式呼叫自身,所以是在同一塊記憶體中呼叫運算的,會提高執行效率,並不會同時分配多個空間,因為當函式遞迴呼叫自身的時候,上一次的函式體已經執行完畢。有點類似迴圈,但是又不是迴圈。
13樓:匿名使用者
是的,區域性變數會新定義一次,不過僅侷限於區域性變數(全域性變數和靜態變數都是全域性的,要是還沒學暫時不用管)。
並不能說是「同時」,應該說是「同樣」,時間上肯定是按照呼叫的先後順序的。
遞迴確實會讓程式變慢,但只是相對於不需要遞迴的等價**。而且原因也不是記憶體分配導致的,而是因為函式呼叫產生的。
c語言函式遞迴呼叫問題。
14樓:天涯海角
c語言函式呼叫整個過程是當準備呼叫函式時,先將形參以從右往左進行壓棧程式跳轉到函式入口,將函式的區域性變數壓棧(如果函式內部再呼叫函式就是在重複這個過程),函式返回時出棧,遞迴是在最後一個點上面函式返回,前面分配的資源根本沒有釋放,遞迴只有在最後一個返回點上面,根據遞迴順序反過來釋放資源,這也是為什麼當遞迴的資料量比較大或者遞迴的層次比較深的時候,很容易造成記憶體溢位的原因
15樓:豐又青
首先系統執行c語言程式是有個棧和堆的
遞迴過程主要用到了棧
棧的原理是先進先出,相當於摞盤子,我只能拿走最上面的那個系統執行函式時會把函式壓入棧裡
遞迴的過程就是利用這點,把函式壓入棧中,但是這個函式的結果需要執行另一個函式,再繼續壓入棧中,知道出現遞迴出口,就是最後一個函式有了結果
開始**,一個一個出棧,跟樓主的結論2差不多
利用遞迴函式呼叫方式,將所輸入的5個字元,以相反順序列印出來
16樓:韶淑敏學鶯
#include
void
pt(char
*p)else
return
;//到最後一個字元,返回進行列印
}int
main()
17樓:樸杉佼俊雅
#include
#include
#include
#include
void
backprint(char
a,int
length);
void
main()
void
backprint(char
a,int
length)
}//如果需要自行輸入,可以將char
a換成string
18樓:費修星建元
遞迴的這樣寫:
#include
void
reverse(char
*s)}
void
main()
19樓:仝秀花來緞
#include
inti;//定義一個整形變數;控制下面迴圈用的;不是5次麼?
void
rev()//瞎定義的一個函式名字rev
}int
main()
{rev();
//主函式呼叫rev
return0;
20樓:風中凌亂的光棍
最先賦值的反而最後輸出
21樓:匿名使用者
棧區遵循先進後出 就像裝子彈一樣 最先進的反而最後打出
有沒有人知道函式的遞迴呼叫
其實遞迴併不難,我剛學時也是一頭霧水,後來弄明白了其實很簡單,函式的遞迴呼叫就是在呼叫一個函式的過程中又出現直接或間接地呼叫該函式本身。幫你找了點資料,希望對你有用 o o.函式的遞迴呼叫是c語言的一個主要特點。1 在呼叫函式f的過程中,又要呼叫f函式,這是直接遞迴呼叫本函式 在呼叫函式f1的過程中...
c語言函式遞迴呼叫看不懂了,求教
程式語言中,函式func type a,直接或間接呼叫函式本身,則該函式稱為遞迴函式。遞迴函式不能定義為行內函數。在數學上,關於遞迴函式的定義如下 對於某一函式f x 其定義域是集合a,那麼若對於a集合中的某一個值x0,其函式值f x0 由f f x0 決定,那麼就稱f x 為遞迴函式。c語言的遞迴...
在呼叫函式時,函式是怎樣傳值的,c語言函式呼叫時,實參和形參是如何傳遞的?什麼時候要寫指標型變數?求高手指點
在c語言中,實參將值傳給函式中的形參,實現了自上而下的值傳遞,就可以呼叫函式了。舉個淺顯一點的例子吧 include void main int swap int x,int y 在主函式中,將實參a,b的值傳遞給被呼叫函式中的形參x,y,即將a,b分別代入x,y中計算,即達到了呼叫的目的。函式的傳...