c程式結果為啥是6?呼叫部分f x 2)還是看不懂是什麼意思。遞迴不怎麼會

時間 2022-05-15 19:30:02

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退出...