go语言编写斐波那契数列 编程写出斐波那契数列前12项

go语言 使用递归与循环两种方式计算斐波那契数列

给定一个正整数n计算出对应斐波那契数列对应的值枣空

为桐城等地区用户提供了全套网页设计制作服务,及桐城网站建设行业解决方案。主营业务为成都网站设计、成都做网站、桐城网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

说明:

用mackbookpro i7 2.7GHZ笔记本进行测试,结果如下:

备注: 当n=80时,由于测试等待时间过长,强制中断了执行。念祥

从测试结果看出,当n逐渐增大,递归方式计算斐波拉契数列的时间复杂性急剧增加。当n值较大时可以考虑用循环方式代替。

类凳高瞎似的方式也可以用于,求阶乘、遍历目录、汉诺塔等问题的解决。在后期的文章中,我将这些内容进行补充,敬请期待,谢谢。

用汇编语言编写斐多纳契数列的前n项和,至少加100位,

仅供参考吧

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: ;统计一共有多少个困兆亏数字组成

CMP BYTE PTR DS:[DI+2],0DH

JZ GO

INC DI

JMP L0

GO: ;计算第n个斐波那契数,把数字字符串转换为十进制数

MOV BL,10

MOV AX,1

MOV SI,DI ;为后面判断输入的是不是只输入一个数有用

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个斐波那契数存放到AX中

PUSH AX

ADD AX,BX

POP BX

LOOP L3

L4:

;显示这个斐波那契数

MOV DX,0

LEA SI,RESULT_SHOW

MOV DI,0 ;利用DI来累计一共有多少个数字

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

;参数: (AX)=DWORD型低16位数据

; (DX)=DWORD型高16位数据

; (CX)=除数

;返回: (DX)=结果的高16位,(AX)=结果的低16位

; (CX)=余数

;32位汪神除16位,可以防止溢出!

DIVDW: ;子程序定义开始,功能是分离各个数字出来

PUSH AX

MOV AX,DX

MOV DX,0

DIV CX

MOV BX,AX

POP AX

DIV CX

MOV CX,DX

MOV DX,BX

RET ;子程序定义结束

CODE ENDS

END START

1编写一个程序文件,求小于任意自然数n的斐波那契(Fibonacci)数列第50项斐波那

斐波那契数列是一个经典的数列,前桥嫌蚂两项为0和1,后续项为前两项之和,即:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...

以下是C语言程序文件,用于求解小于自然数n的斐波那契数列第50项的值:

#include stdio.h

int main() {

int n = 100;  // 假设n为100

int a = 0, b = 1, c;

int i;

for (i = 2; i 50; i++) {

c = a + b;

if (c n) break;

a = b;

b = c;

}

printf("小于%d的斐波那契数列第50项为%d", n, b);

return 0;

}

解释:

我们假设n为100,可以根据实际情况修改。

定义a=0,b=1为前两项,c为当前项,i从2开始循环,因为前两项已经确定。

每次循环,c为a和b之和,判断c是否大于n,如果大于,则退出循环,否则将a和b往后移动一项。

输出小于n的斐波那契数列第50项,即b。

注意:这里求的是小于n的斐波那契数列第50项,如果要求恰敏埋好等于n的斐波那契数列第几项,需要对程序进行修改。者侍

Go语言 斐波那契数列的解法

这么物衡写效率罩键做很低,没有剪枝,存在大量的重复计算。

反正你测亮腊试用例是有限的,那我骗过你的测试用例就行了啊;)

标题名称:go语言编写斐波那契数列 编程写出斐波那契数列前12项
URL地址:https://www.cdcxhl.com/article16/ddpgjgg.html

成都网站建设公司_创新互联,为您提供网站内链营销型网站建设域名注册网站营销网站排名响应式网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都网站建设公司