僅供參考吧
創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)與策劃設(shè)計(jì),牟定網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:牟定等地區(qū)。牟定做網(wǎng)站價格咨詢:18982081108
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
BUFF DB 10
DB ?
DB 10 DUP(?)
RESULT DW ?
RESULT_SHOW DB 10 DUP(?)
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
LEA DX,BUFF
MOV AH,0AH
INT 21H
MOV DI,0
L0: ;統(tǒng)計(jì)一共有多少個數(shù)字組成
CMP BYTE PTR DS:[DI+2],0DH
JZ GO
INC DI
JMP L0
GO: ;計(jì)算第n個斐波那契數(shù),把數(shù)字字符串轉(zhuǎn)換為十進(jìn)制數(shù)
MOV BL,10
MOV AX,1
MOV SI,DI ;為后面判斷輸入的是不是只輸入一個數(shù)有用
MOV CX,DI
L2: PUSH AX
SUB BYTE PTR DS:[DI+1],30H
MUL BYTE PTR DS:[DI+1]
ADD RESULT,AX
POP AX
MUL BL
DEC DI
LOOP L2
;分兩種情況:1.輸入的是1;2.輸入的不是1
CMP SI,1
JNZ L7
CMP BYTE PTR RESULT,1
JNZ L7
MOV AX,RESULT
JZ L4
L7: MOV AX,1
MOV BX,0
MOV CX,RESULT
DEC CX
L3: ;第n個斐波那契數(shù)存放到AX中
PUSH AX
ADD AX,BX
POP BX
LOOP L3
L4:
;顯示這個斐波那契數(shù)
MOV DX,0
LEA SI,RESULT_SHOW
MOV DI,0 ;利用DI來累計(jì)一共有多少個數(shù)字
L5:
MOV CX,10
CALL DIVDW
ADD CL,30H
MOV DS:[SI],CL
CMP AX,0
JZ L6
INC SI
INC DI
JMP L5
L6:
MOV DL,DS:[SI]
MOV AH,2
INT 21H
CMP DI,0
JZ OK
DEC SI
DEC DI
JMP L6
OK:
MOV AX,4C00H
INT 21H
;參數(shù): (AX)=DWORD型低16位數(shù)據(jù)
; (DX)=DWORD型高16位數(shù)據(jù)
; (CX)=除數(shù)
;返回: (DX)=結(jié)果的高16位,(AX)=結(jié)果的低16位
; (CX)=余數(shù)
;32位除16位,可以防止溢出!
DIVDW: ;子程序定義開始,功能是分離各個數(shù)字出來
PUSH AX
MOV AX,DX
MOV DX,0
DIV CX
MOV BX,AX
POP AX
DIV CX
MOV CX,DX
MOV DX,BX
RET ;子程序定義結(jié)束
CODE ENDS
END START
給定一個正整數(shù)n計(jì)算出對應(yīng)斐波那契數(shù)列對應(yīng)的值
說明:
用mackbookpro i7 2.7GHZ筆記本進(jìn)行測試,結(jié)果如下:
備注: 當(dāng)n=80時,由于測試等待時間過長,強(qiáng)制中斷了執(zhí)行。
從測試結(jié)果看出,當(dāng)n逐漸增大,遞歸方式計(jì)算斐波拉契數(shù)列的時間復(fù)雜性急劇增加。當(dāng)n值較大時可以考慮用循環(huán)方式代替。
類似的方式也可以用于,求階乘、遍歷目錄、漢諾塔等問題的解決。在后期的文章中,我將這些內(nèi)容進(jìn)行補(bǔ)充,敬請期待,謝謝。
遞歸
long func(int n)
{
if(n ==1 || n == 2) return 1;
return func(n - 1) + func(n -2);
}
#include stdio.h
main( ){
long f1,f2,f;
int i,n;
scanf("%d",n);
f1=f2=1;
if(n=2)
f=1;
else
for(i=3;i=n;i++){
f=f1+f2;
f1=f2;
f2=f;
}
printf("%ld\n",f);
}
波那契數(shù)列,又稱黃金分割數(shù)列,指的是這樣一個數(shù)列:0、1、1、2、3、5、8、13、21、34、??在數(shù)學(xué)上,斐波納契數(shù)列以如下被以遞歸的方法定義:
F(0)=0,F(xiàn)(1)=1,F(xiàn)(n)=F(n-1)+F(n-2)(n≥2,n∈N*)在現(xiàn)代物理、準(zhǔn)晶體結(jié)構(gòu)、化學(xué)等領(lǐng)域,斐波納契數(shù)列都有直接的應(yīng)用,為此,美國數(shù)學(xué)會從1963起出版了以《斐波納契數(shù)列季刊》為名的一份數(shù)學(xué)雜志,用于專門刊載這方面的研究成果。
名稱欄目:用go語言寫斐波那契數(shù)列 go語言實(shí)現(xiàn)斐波那契
標(biāo)題URL:http://muchs.cn/article4/dophgie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、品牌網(wǎng)站設(shè)計(jì)、移動網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)公司、軟件開發(fā)、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)