• Go斐波拉契数列(Fibonacci)(多种写法)


    1 前言

    斐波拉契数列有递归写法和尾递归和迭代写法。

    2 代码

    //recursion
    func fib(n int) int{
    	if n < 2{
    		return n
    	}else{
    		return fib(n-1) + fib(n-2)
    	}
    
    }
    
    func fibcore(n int) (int,int){
    	if n < 2{
    		return 0,n
    	}else{
    		a,b := fibcore(n-1)
    		return b,a+b
    	}
    
    }
    
    //tail recursion
    func fib2(n int)(int){
    	_,b:= fibcore(n)
    	return b
    }
    
    //iteration 
    func fib3(max int)(int){
    	n:=0
    	a,b:=0,1
    	for {
    		if n < max{
    			a,b = b,a+b
    			n ++
    		}else{
    			break
    		}
    	}
    	return b
    }
    

    3 性能分析

    测试第40个的数列值

    递归

    尾递归(参数是40,100都大约是这个时间量)

    迭代(参数是40,100都大约是这个时间量)

    说明:本质上尾递归就是迭代,只是写法略有差别

      

  • 相关阅读:
    QComboBox实现复选功能
    STL容器介绍
    QTableWidget控件总结
    (转)QT常用快捷键
    Hibernate的CRUD
    理解O/R Mapping
    JQuery验证input
    MapReduce概念(转)
    RedHat9上安装jdk
    集合框架
  • 原文地址:https://www.cnblogs.com/fanbi/p/10024788.html
Copyright © 2020-2023  润新知