給定一個(gè)正整數(shù)n計(jì)算出對(duì)應(yīng)斐波那契數(shù)列對(duì)應(yīng)的值
站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到義馬網(wǎng)站設(shè)計(jì)與義馬網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、空間域名、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋義馬地區(qū)。
說(shuō)明:
用mackbookpro i7 2.7GHZ筆記本進(jìn)行測(cè)試,結(jié)果如下:
備注: 當(dāng)n=80時(shí),由于測(cè)試等待時(shí)間過(guò)長(zhǎng),強(qiáng)制中斷了執(zhí)行。
從測(cè)試結(jié)果看出,當(dāng)n逐漸增大,遞歸方式計(jì)算斐波拉契數(shù)列的時(shí)間復(fù)雜性急劇增加。當(dāng)n值較大時(shí)可以考慮用循環(huán)方式代替。
類(lèi)似的方式也可以用于,求階乘、遍歷目錄、漢諾塔等問(wèn)題的解決。在后期的文章中,我將這些內(nèi)容進(jìn)行補(bǔ)充,敬請(qǐng)期待,謝謝。
Func函數(shù)是包含在Function和End Function語(yǔ)句之間的一組VBScript語(yǔ)句。
Func函數(shù)與Sub過(guò)程類(lèi)似。但Func函數(shù)可以有返回值??梢允褂脜?shù)。如果Func函數(shù)沒(méi)有任何參數(shù),則Function語(yǔ)句必須要包含空括號(hào)。Func函數(shù)通過(guò)函數(shù)名返回一個(gè)值。返回值的數(shù)據(jù)類(lèi)型是Variant。
語(yǔ)法: Function 函數(shù)名 (參數(shù)1,參數(shù)2,...)
...
End Function
func在go語(yǔ)言中的使用:
在 Go 語(yǔ)言中,函數(shù)聲明通用語(yǔ)法如下:
func functionname(parametername type) returntype {??
// 函數(shù)體(具體實(shí)現(xiàn)的功能)
}
函數(shù)的聲明以關(guān)鍵詞 func 開(kāi)始,后面緊跟自定義的函數(shù)名 functionname (函數(shù)名)。函數(shù)的參數(shù)列表定義在 ( 和 ) 之間,返回值的類(lèi)型則定義在之后的 returntype (返回值類(lèi)型)處。
聲明一個(gè)參數(shù)的語(yǔ)法采用 參數(shù)名 參數(shù)類(lèi)型 的方式,任意多個(gè)參數(shù)采用類(lèi)似 (parameter1 type, parameter2 type) 即(參數(shù)1 參數(shù)1的類(lèi)型,參數(shù)2 參數(shù)2的類(lèi)型)的形式指定。之后包含在 { 和 } 之間的代碼,就是函數(shù)體。
階乘計(jì)算機(jī)階乘編輯階乘Logo語(yǔ)言Logo語(yǔ)言因?yàn)槭巧賰旱膶W(xué)習(xí)語(yǔ)言,階乘方法要復(fù)雜一些,而且時(shí)間較慢,下面是低精度、高精度、統(tǒng)計(jì)位數(shù)的階乘算法:TODJDJC:N;低精度階乘MAKES1;累乘器開(kāi)始的值是1FORI1:N[MAKES:S*:I](PR:N[!]:S)ENDTOGJDJC:N;高精度階乘IF:N1000THENPR請(qǐng)輸入不大于999的數(shù)!STOPMAKEPRECISION6;計(jì)算顯示位數(shù)設(shè)定為六位MAKEAARRAY860;定義數(shù)組空間0859組ASET:A11;乘法數(shù)組第1空間賦值為1FORI2859[ASET:A:I0];其他數(shù)組空間賦值為0FORI1:N[JC:I];調(diào)用階乘過(guò)程MAKEK0;數(shù)組空間是0的標(biāo)記MAKEZ0;總共有多少組數(shù)字的標(biāo)記MAKEWS0;累加總共有多少位的計(jì)數(shù)器TYPE:NTYPE[!];從高位到低位顯示計(jì)算結(jié)果FORM1859[XXS860:M]PR[]TYPE[這是一個(gè)]TYPE:WSTYPE[位數(shù)]PR[]ENDTOJC:I;計(jì)算階乘的過(guò)程FORJ1858[CF:I:J];對(duì)所有數(shù)組空間逐一計(jì)算乘法FORJ1858[CLJW:J];處理乘法過(guò)程中的進(jìn)位ENDTOCF:I:J;計(jì)算乘法的過(guò)程MAKEZJAGET:A:JMAKEZJ:ZJ*:I;I是階乘中需要累乘的數(shù)ASET:A:J:ZJENDTOCLJW:J;處理進(jìn)位的過(guò)程MAKEXAGET:A:JIF:X1000THENGOXXX;處理沒(méi)有進(jìn)位的數(shù)組MAKEJINWEIINT(:X/1000);截取小于1000的尾數(shù)MAKEWEISHU:X:JINWEI*1000;截取進(jìn)位的數(shù)字ASET:A:J:WEISHU;存儲(chǔ)尾數(shù)MAKEYAGET:A:J+1MAKEY:Y+:JINWEIASET:A:J+1:Y;向上進(jìn)位LABELXXXENDTOXXS:P;顯示計(jì)算結(jié)果的過(guò)程MAKENNAGET:A:PIF(AND:NN0:K0)THEN[GOEND_]ELSE[MAKEK1MAKEZ:Z+1];避開(kāi)無(wú)效數(shù)組IF:Z1THENMAKEWS:WS+(COUNT:NN)GOUP;計(jì)算頭一個(gè)有效數(shù)組的位數(shù)IF:Z1THENMAKEWS:WS+3;累計(jì)數(shù)值的總位數(shù)IF:NN10THENTYPE[0];填充空位0IF:NN100THENTYPE[0]LABELUPTYPE:NNLABELEND_;越過(guò)開(kāi)頭的空數(shù)組ENDTOJC:N;求解任意數(shù)的階乘是多少位數(shù)MAKES0;先賦值位數(shù)為0FORI1:N[MAKES:S+LOG10:I]TYPE[:S]PR:SEND階乘CommonLisp語(yǔ)言在CommonLisp中,可以很方便的使用更為簡(jiǎn)潔的使用遞歸實(shí)現(xiàn)階乘:(defunfactorial(n)(cond((n0)(*(factorial(n1))n))((n0)1)(t(errorNissmallerthan0.))))注意:因?yàn)榘俣炔惶峁┤魏蜭isp語(yǔ)言的代碼框,此處使用的是Python的代碼框,所以關(guān)鍵字可能無(wú)法高亮顯示階乘Python語(yǔ)言在Python中,同樣可以使用這種簡(jiǎn)潔方式實(shí)現(xiàn)階乘的計(jì)算:deffactorial(n)if(n1):return1else:returnfactorial(n1)*n階乘C語(yǔ)言在C語(yǔ)言中,使用循環(huán)語(yǔ)句可以很方便的求出階乘的值,