1樓:瀚漠
第一次傳遞1,if(a<1)判斷為假,則執行 t=jet(a-1)*2; 這裡再呼叫jet函式,傳參為0,if(a<0)則為真,執行t=1並返回t,回到上一次呼叫時t=jet(a-1)*2這裡,jet(0)返回1,所以這裡 t=1*2=2,返回t,所以結果為2.。。。
一般的遞迴題目不能從開始走,應該找jet函式真正返回時,就是a<1時開始往回算。。尤其c語言關於遞迴的列印資訊的題目,一定要從返回處算起。。。
2樓:
因為a=1,所以直接執行else後的程式
t=jet(a-1)*2,也就是遞迴了
jet(a-1)=jet(0),而jet(0)由於0<1,所以t=1,jet(0)返回的是1
所以t=jet(a-1)*2就等於1*2=2
3樓:草根英雄
jet.基本上,你給個一都不用遞迴的。這樣寫成數學式,很容易看出你其實只呼叫一次,而最終返回的是呼叫子問題後的返回值。
遞迴就是對相似問題的分解,知道解決了每乙個子問題後才向上返回,比如,1 2 3 4 5這5個問題域,那麼遞迴後的返回順序一定是 5 4 3 2 1,子問題的集合就是父問題的解,依次類推,得到最終解。
4樓:匿名使用者
jet(1) 遇到if(a<1),因為a不小1 執行else t = jet(1-1)*2;
即再一次呼叫jet函式 傳入0 遇到if(a<1)t =1 返回1繼續第一次的else t = 1 * 2;
return t 所以返回2
c語言遞迴問題
0,0,1,2,3,4 傳入5的時候,myfunc中符合if中的遞迴呼叫 執行,首先內部執行 x,此時x變為4,然後內部函式執行myfunc 4 該函式呼叫完成後輸出4 注意是呼叫完成,說明前面會有printf輸出 在呼叫myfunc 4 的時候內部的if又被滿足,呼叫myfunc 3 在myfun...
c語言用遞迴方法求累加和,C語言 用遞迴方法求累加和
處填fun n i 沒用 此例給出 include int fun int m else int main c語言用遞迴方式求n個數的和 include include using namespace std int add int n int main int add int n 利用add 函式...
C語言求此全排列遞迴演算法解析,C語言如何用遞迴演算法求1 2 3 n
used陣列是全域性變數有隱含初值0 關於全排列的演算法你可以理解為深搜加回溯。include define max 10 int used max 用來標記數字是否已經在前面使用過 int result max 存放結果int n void print 輸出結果void proc int step...