閱讀以下說(shuō)明和C 函數(shù)代碼,回答問(wèn)題并將解答寫(xiě)在答題紙的對(duì)應(yīng)欄內(nèi)。
【說(shuō)明】
著名的菲波那契數(shù)列定義式為
f1 = 1 f2 = 1 fn = fn-1 + fn-2 (n = 3,4,…)
因此,從第 1 項(xiàng)開(kāi)始的該數(shù)列為 1,1,2,3,5,8,13,21,…。函數(shù) fib1 和 fib2 分別用遞歸方式和迭代方式求解菲波那契數(shù)列的第 n項(xiàng)(調(diào)用 fib1、fib2 時(shí)可確保參數(shù)n獲得一個(gè)正整數(shù))。
【C 函數(shù)代碼】
【問(wèn)題1】(6 分)
函數(shù)fib1和fib2存在錯(cuò)誤,只需分別修改其中的一行代碼即可改正錯(cuò)誤。
(1)函數(shù)fib1不能通過(guò)編譯,請(qǐng)寫(xiě)出fib1中錯(cuò)誤所在行修改正確后的完整代碼;
(2)函數(shù)fib2在n≤2時(shí)不能獲得正確結(jié)果,請(qǐng)寫(xiě)出fib2中錯(cuò)誤所在行修改正確的完整代碼。
【問(wèn)題2】(3 分)
將函數(shù)fib1和fib2改正后進(jìn)行測(cè)試,發(fā)現(xiàn)前46項(xiàng)都正確,而第47項(xiàng)的值是一個(gè)負(fù)數(shù),請(qǐng)說(shuō)明原因。
【問(wèn)題3】(6 分)
函數(shù)fib1、fib2求得菲波那契數(shù)列第n項(xiàng)(n>40)的速度并不相同,請(qǐng)指出速度慢的函數(shù)名,并簡(jiǎn)要說(shuō)明原因。