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

Python010

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

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

说明:

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

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

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

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

Func函数是包含在Function和End Function语句之间的一组VBScript语句。

Func函数与Sub过程类似。但Func函数可以有返回值。可以使用参数。如果Func函数没有任何参数,则Function语句必须要包含空括号。Func函数通过函数名返回一个值。返回值的数据类型是Variant。

语法: Function 函数名 (参数1,参数2,...)

...

End Function

func在go语言中的使用:

在 Go 语言中,函数声明通用语法如下:

func functionname(parametername type) returntype {  

  // 函数体(具体实现的功能)

}

函数的声明以关键词 func 开始,后面紧跟自定义的函数名 functionname (函数名)。函数的参数列表定义在 ( 和 ) 之间,返回值的类型则定义在之后的 returntype (返回值类型)处。

声明一个参数的语法采用 参数名 参数类型 的方式,任意多个参数采用类似 (parameter1 type, parameter2 type) 即(参数1 参数1的类型,参数2 参数2的类型)的形式指定。之后包含在 { 和 } 之间的代码,就是函数体。

阶乘计算机阶乘编辑阶乘Logo语言Logo语言因为是少儿的学习语言,阶乘方法要复杂一些,而且时间较慢,下面是低精度、高精度、统计位数的阶乘算法:TODJDJC:N低精度阶乘MAKES1累乘器开始的值是1FORI1:N[MAKES:S*:I](PR:N[!]:S)ENDTOGJDJC:N高精度阶乘IF:N1000THENPR请输入不大于999的数!STOPMAKEPRECISION6计算显示位数设定为六位MAKEAARRAY860定义数组空间0859组ASET:A11乘法数组第1空间赋值为1FORI2859[ASET:A:I0]其他数组空间赋值为0FORI1:N[JC:I]调用阶乘过程MAKEK0数组空间是0的标记MAKEZ0总共有多少组数字的标记MAKEWS0累加总共有多少位的计数器TYPE:NTYPE[!]从高位到低位显示计算结果FORM1859[XXS860:M]PR[]TYPE[这是一个]TYPE:WSTYPE[位数]PR[]ENDTOJC:I计算阶乘的过程FORJ1858[CF:I:J]对所有数组空间逐一计算乘法FORJ1858[CLJW:J]处理乘法过程中的进位ENDTOCF:I:J计算乘法的过程MAKEZJAGET:A:JMAKEZJ:ZJ*:II是阶乘中需要累乘的数ASET:A:J:ZJENDTOCLJW:J处理进位的过程MAKEXAGET:A:JIF:X1000THENGOXXX处理没有进位的数组MAKEJINWEIINT(:X/1000)截取小于1000的尾数MAKEWEISHU:X:JINWEI*1000截取进位的数字ASET:A:J:WEISHU存储尾数MAKEYAGET:A:J+1MAKEY:Y+:JINWEIASET:A:J+1:Y向上进位LABELXXXENDTOXXS:P显示计算结果的过程MAKENNAGET:A:PIF(AND:NN0:K0)THEN[GOEND_]ELSE[MAKEK1MAKEZ:Z+1]避开无效数组IF:Z1THENMAKEWS:WS+(COUNT:NN)GOUP计算头一个有效数组的位数IF:Z1THENMAKEWS:WS+3累计数值的总位数IF:NN10THENTYPE[0]填充空位0IF:NN100THENTYPE[0]LABELUPTYPE:NNLABELEND_越过开头的空数组ENDTOJC:N求解任意数的阶乘是多少位数MAKES0先赋值位数为0FORI1:N[MAKES:S+LOG10:I]TYPE[:S]PR:SEND阶乘CommonLisp语言在CommonLisp中,可以很方便的使用更为简洁的使用递归实现阶乘:(defunfactorial(n)(cond((n0)(*(factorial(n1))n))((n0)1)(t(errorNissmallerthan0.))))注意:因为百度不提供任何Lisp语言的代码框,此处使用的是Python的代码框,所以关键字可能无法高亮显示阶乘Python语言在Python中,同样可以使用这种简洁方式实现阶乘的计算:deffactorial(n)if(n1):return1else:returnfactorial(n1)*n阶乘C语言在C语言中,使用循环语句可以很方便的求出阶乘的值,