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語言程式填空,C語言程式填空題

有1個地方填錯了 第一題 第一空 num k n 2 第二空 for k 0 k 去掉第二題 第一空 a i 2 0 第二空 s a i c語言程式填空題 include include int isprime int num 1判斷num是否為質數 for int i 2 i格外面已經有分號,格仔...

C語言填空

答案如下 3d表示從標準輸入裝置讀取3位十進位制數字,所以x 123 空格是預設的資料分隔符,所以y只能讀取到空格,以後的都被丟棄,因此y 45,又因為y是浮點數 float c評語在格式化輸出時,根據資料來決定顯示精度,但float最多顯示6位小數,所以最後顯示y是45.0。scanf 3d f ...

c語言問題,C語言問題,謝謝!!!

這樣簡單的 復問題,按照制書上的舉例。套出一bai個來就行了,就是du乙個迴圈語句,內 zhi加乙個判斷奇偶語句dao就行了吧!源程式如下 include int main printf 偶數和為 d n奇數和為 d n o,j return 0 用 for迴圈抄 include int main ...