第一題:求類似斐波那契數(shù)列中的第n個數(shù)
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了靜安免費建站歡迎大家使用!
先來看下什么是斐波那契數(shù)列:
指的是這樣一個數(shù)列:1、1、2、3、5、8、13、21、34、……在數(shù)學(xué)上,斐波那契數(shù)列以如下被以遞推的方法定義:F(1)=1,F(xiàn)(2)=1, F(n)=F(n-1)+F(n-2)(n=3,n∈N*)
數(shù)列中的每個數(shù),都等于前兩個數(shù)字之和。第一數(shù)和第二數(shù)規(guī)定為1.
回到圖中的程序,n=2時,返回2,那么就是將第一個和第二個數(shù)規(guī)定為2。
即:
fib(1)=2, fib(2)=2
根據(jù)公式:
fib(3) = fib(1)+fib(2)=2+2=4
代碼的用遞歸實現(xiàn),若不懂遞歸,可google之或百度之。
第二題:
main函數(shù)里的變量a,b,c都沒有用上,迷惑你用的。回到d
d=f(f(3,4), f(3,5))
再看f這個函數(shù)
f(3,4) = f(x,y)=(y-x)*x=(4-3)*3=3
f(3,5) = (5-3)*3=6
因此,d=f(f(3,4), f(3,5))=f(3,6)=(6-3)*3=9
第三題 這個函數(shù)里面的賦值寫法我還沒見過,容我再想想。
當(dāng)程序編譯后link,講函數(shù)地址保存在段寄存器中,代碼段內(nèi),當(dāng)某處調(diào)用此函數(shù)時(匯編代碼CALL),將此地址壓入棧中,并且根據(jù)指令地址寄存器(程序計數(shù)器內(nèi))中保存的值計算到該函數(shù)地址的偏移量,隨后通過__cdecl等調(diào)用方式將參數(shù)和局部變量壓入棧中。具體的過程比較復(fù)雜,具體應(yīng)該參照PE結(jié)構(gòu)等。比較深入,我也只是粗略了解
可以參考計算機組成與設(shè)計一書
C語言中調(diào)用函數(shù)的方法及步驟:
工具/原料:C語言
1、首先需要輸入想要調(diào)用的函數(shù)。
2、然后當(dāng)輸入一個括號后,即可觀察他的參數(shù)。
3、接著在對應(yīng)的參數(shù)中輸入?yún)?shù)值。
4、然后,系統(tǒng)會發(fā)生一個警告。
5、接著需要調(diào)用它相應(yīng)的頭文件。
6、最后再次編譯,發(fā)現(xiàn)沒有任何警告和錯誤即可。