1樓:匿名使用者
遞迴就是自己呼叫自己,你把兩次呼叫分開看就容易理解了讀程式最直接的辦法,你把值代進去看一遍,例如:
z = f(3); // 把x=3代入函式f不滿足第一個if判斷,因此,y = 3 * 3 - f(3 - 2); // 此時再把x = 3 - 2代入f
滿足第一個if判斷,f(1)的值為3,因此上面的表示式就變成了y = 3 * 3 - 3; // 算出y的值為6也就是說f(3)的值是6
那麼z的值也為6
所以最後輸出的結果是6
2樓:匿名使用者
程式執行到 z=f(3),呼叫了f函式,引數為3看f函式裡面,因為引數不是1或者0,所以不會返回3,而是執行y=x*x-f(x-2);,把引數代入,得
y=3*3-f(3-2);,也就是y=9-f(1);
這時候產生了一個遞迴,在f函式中呼叫了f函式自己。
重新執行f,但這次引數是1了,所以返回3
再看剛才第一次呼叫的那個y=9-f(1);,返回3,也就是y=9-3; 返回6
所以最後結果是6
解釋的有點羅嗦,不知道你是不是能看懂
組合語言是怎麼呼叫c語言的程式的
育知同創教育 一 引數傳遞的基本規則 atpcs arm thumb procedure call standard 1 引數傳遞 二 彙編程式 c程式相互呼叫舉例 1 c程式呼叫匯程式設計序 彙編程式的設計要遵守atpcs arm thumb procedure call standard 保證程...
c語言請問下這兩個程式出來的結果為啥不一樣
二個程式都有點問題。第一個程式。你的那個i有二個地方有增加的。一個的i 一個的i i 168,這樣就不能遍歷1 10000裡面的全部情況了。應該在設個變數。比如ii i 168.第二個程式的問題是思路上的漏洞。沒有考慮這個數是負數的情況。c語言程式設計問題。為什麼這兩個程式執行的結果不一樣? 萢萢 ...
c語言,以下程式的輸出結果是,C語言問題 以下程式的輸出結果是?
輸出1 3 這是遞迴了,所以先是fun 3 進入後發現3 2 1,所以又繼續func 3 2 也就是fun 1 進入發現1 2 0,就執行prinft,輸出1,然後fun 1 就返回了 返回出去正好是fun 3 的prinft,輸出3 進入fun 3 進入fun 1 輸出1退出fun 1 輸出3退出...