C語言填空謝謝

時間 2021-07-21 03:37:36

1樓:手機使用者

2,返回值是1;

所以當k>2時,函式會遞迴呼叫;

如果實在不能理解,可以進行有效**替換來看一下遞迴呼叫的過程;

首先fun(6,&x);

等價於:

fun(5,&x);

fun(4,&x);

x=a+b;

然後進一步替換fun(5,&x);

又等價於:

fun(4,&x);

x=a+b;

繼續:fun(3,&x);

x=a+b;

}fun(4,&x);

x=a+b;

繼續:fun(2,&b);

x=a+b; //表示式中的x為fun(3,*p)的*p值+fun(2,*p)的*p值 為3

}//下面一次呼叫返回,這就是遞迴執行的過程,不一一代入了,可以自己代入看看結果是8

fun(3,&x);

x=a+b;

}fun(4,&x);

x=a+b;

以上是從函式呼叫過程分析的結果,另外還可以這樣理解:

首先理解一下fun(k,*p)這個函式的內容;

不難發現,fun(1,*p)和fun(2,*p)執行後*p =1;

而如果k值不為1或者2時,函式會一直調到k =1 或者k=2位置才會返回;

既然是k=6 ,可以簡單推一下;

fun(3,p3)時,

函式呼叫變成了

fun(2,p1)

fun(1,p2)

p3= p1+p2 =2

fun(4,p4)時,

函式呼叫變成了

fun(3,p3)

fun(2,p2)

p4=p2+p3 = 1+2 =3

fun(5,p5)時,

函式呼叫變成了

fun(4,p4)

fun(3,p3)

p5=p3+p4= 2+3 =5

fun(6,p6)時,

函式呼叫變成了

fun(5,p5)

fun(4,p4)

p6=p4+p5= 3+5=8

……總結可以發現這個函式實際實現了一個求佇列中第k個元素值的作用。

而這個佇列是1 1 2 3 …… n[k-2] n[k-1] n[k]= n[k-1]+n[k-2];

都是我自己敲了呀,累死我了~~~

2樓:匿名使用者

int argc,char *argv

c語言程式填空,急

1.scanf s name i 2.strcmp name i name j 3.strcpy name i name j include include define n 10 void main for i 0 i printf s n name i 1.gets name i 2.strcm...

一道c語言填空題求高手指點,一道C語言填空題 求高手指點

結果是 ar 9ar 9ar 11 p a 5 相當於a 5 結果是11一共迴圈3次 第一次,i 3 執行 case 3 pr p p就指向的是a 4 的值,結果為9,輸出ar 9第二次,i 2執行case 2 pr p break 結果還是ar 9,但p 所以輸出後。p指向的是a 5 11第三次,...

C語言問題謝謝

萌寵奇趣秀 直接拿你的 在編譯器執行了一下,結果如下 下面說一下我對這道題目的解析 1 為什麼 x y 7 首先你要知道,和 都是運算浮,但是因為 的優先順序為2,的優先順序為4,所以這個公式可以看成 x y 而x的 雲算浮在後,所以先使用x 2參與運算,2 5 7。2 為什麼 x y 4的輸出結果...