當程序運行陷于死循環時,說明程序中存在⑴_d_____。在c語言中,函數定義及函數調用應該遵循的原則是⑵___b___。以求階乘為例,采用遞歸的方式編寫的程序相對于遞推方式的程序執行效率較低的原因是⑶__c____.
·供選擇的答案
⑴ a 語法錯誤 b 靜態的語義錯誤 c 詞法錯誤 d 動態的語義錯誤
⑵ a 可以進行函數的嵌套定義,不可以進行函數的嵌套調用
b 不可以進行函數的嵌套定義,可以進行函數的嵌套調用
c 既可以進行函數的嵌套定義,也可以進行函數的嵌套調用
d 既不能進行函數的嵌套定義,也不能進行函數的嵌套調用
⑶ a 遞歸程序經編譯后形成較長的目標代碼,所以需要較多的運行時間
b 遞歸程序執行時多次復制同一段目標代碼占用了較多得時間
c 遞歸程序執行過程中重復存取相同的數據占用了較多得時間
d 自頂向下
·參考答案 ⑴d ⑵b ⑶c
前兩題沒問題,第三個怎么理解啊,選a不行嗎
標題:答復舉例說明
----------------------------
斐波拉契數列定義為f(0) = f(1) = 1, f(n) = f(n-1) + f(n-2) (n>=2)
如果用遞歸定義的函數計算f(5),則f(5)= f(4) + f(3)
而f(4)= f(3)+ f(2)
這樣在計算f(5)的過程中,f(3)至少被計算了2次,這是沒有必要的重復,也是用遞歸方法計算的最大缺點.
至于編譯生成的目標代碼的長度,遞歸函數的目標代碼一般是很短小的。