package main

import (
"fmt"
"time"
) /*
·递归就是自己调自己
·递归一定要有终止条件(否则就是无限死循环)
*/ /*使用循环求连续自然数的和*/
func GetSumLoop(n int) int {
var sum int
for i := 1; i <= n; i++ {
sum += i
}
return sum
} /*递归实现求连续自然数的和*/
func GetSumRecursive(n int) int {
if n == 1 {
return 1
}
return n + GetSumRecursive(n-1)
} /*
斐波那契数列
1 1 2 3 5 8 13 21 34...
*/
func GetFibonacciRecursively(n int) int {
if n == 0 || n == 1 {
return 1
}
return GetFibonacciRecursively(n-1) + GetFibonacciRecursively(n-2)
} /*
使用纯循环求斐波那契数列
*/
func GetFibonaciiLoop(n int) int {
var a, b = 1, 1
for i := 0; i < n; i++ {
a, b = b, a+b
}
return a
} func main() {
//sum := GetSumRecursive(10)
//fmt.Println(sum) /*递归算斐波那契数列耗时*/
startTime := time.Now().UnixNano()
for i := 0; i < 50; i++ {
fmt.Println(GetFibonacciRecursively(i))
}
endTime := time.Now().UnixNano()
fmt.Println("共耗时%d纳秒", endTime-startTime) /*循环算斐波那契数列耗时*/
//startTime := time.Now().UnixNano()
//for i := 0; i < 1000; i++ {
// fmt.Println(GetFibonaciiLoop(i))
//}
//endTime := time.Now().UnixNano()
//fmt.Println("共耗时%d纳秒", endTime-startTime) /*
递归算法
优点:代码简洁
缺点:效率相比简单循环慢很多
*/
}

  

GO语言复合类型05---递归的更多相关文章

  1. GO语言复合类型04---映射

    package main import "fmt" /* 映射(map)是键值对(key-value)数据的集合 根据键key可以快速检索值value 键值的类型可以是任意的,ke ...

  2. GO语言复合类型03---切片

    切片相当于长度可以动态扩张的数组 array[start:end]从数组身上截取下标为[start,end)片段,形成切片start代表开始下标,不写默认代表从头开始切end代表结束下标(本身不被包含 ...

  3. GO语言复合类型02---数组

    package main import "fmt" /* 固定长度.固定类型的数据容器 */ /*数组的声明*/ func main031() { //var array [5]i ...

  4. GO语言复合类型01---指针

    package main /* %T 类型占位符 %v 值占位符 %p 地址(指针)占位符,只有地址才能替换%p &value 对值取地址 *addr 对地址取值 **int 指向int型指针 ...

  5. go语言 类型:基础类型和复合类型

    Go 语言中包括以下内置基础类型:布尔型:bool整型:int int64 int32 int16 int8 uint8(byte) uint16 uint32 uint64 uint浮点型:floa ...

  6. 带你学够浪:Go语言基础系列 - 8分钟学复合类型

    ★ 文章每周持续更新,原创不易,「三连」让更多人看到是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) " 对于一般的语言使用者来说 ,20% ...

  7. C语言中的复合类型

    复合类型 一.掌握的类型 1. 指针数组 int * arr[10]; //arr是一个数组,有10个元素,每个元素都是一个指针,即arr是一个指针数组 int a,b,c,d; arr[0] = & ...

  8. struts复合类型传值(对象传值)

    01:导包,配置web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version ...

  9. postgresql 函数 参数为复合类型

    postgresql没有存储过程,但是函数功能很强大. 在近期开发的电商管理平台中,对于产品的类目管理,设计时有个属性字段,设为字符数组,但是EF不支持数组的操作,所以在添加和修改类目时,需要对属性的 ...

随机推荐

  1. Cobalt-Strike Office宏利用与免杀

    1.打开Cobalt-Strike生产Office宏病毒. 首先需要设置监听器.因为钓鱼的目标比较单纯,在这里就不采用域前置技术. 然后使用攻击模块,生产Office宏病毒. 设置好监听器. 生成宏病 ...

  2. Java文档注释全攻略

    注释:注释起到对代码标注和解释的作用,如果你去看看JDK源码,会发现他们有许多的注释,而且注释是比代码还要多的,可见为代码添加注释是非常重要的,写好注释能让别人更加容易看懂你的代码,注释可以分为以下三 ...

  3. 【OO课下讨论】bug中的“二八定律”

    bug中的"二八定律" 本文主要为讨论2020/3/17下午OO课讨论的第三个思考题设立 有一个经典的经验性原则,叫帕累托原则,也称为二八定律.这个原则在经济.社会和科技等多个领域 ...

  4. 【Nginx(三)】Nginx配置集群 负载均衡策略

    Nginx配置集群 负载均衡策略 一.安装环境 1.安装JDK8的环境,配置JDK8的环境变量 2.上传jar包demo-1.jar 和 demo-2.jar demo-1.jar 监听8080端口; ...

  5. 使用EasySYS搭建驱动开发基本框架

    提供EasySYS的下载地址:http://bbs.pediy.com/showthread.php?p=956643,看雪上有提供下载,自行百度. EasySYS你能够帮我们快速的搭建驱动的开发框架 ...

  6. hdu5256序列变换(非递减子序列)

    题意(中文直接粘吧)序列变换 Problem Description     我们有一个数列A1,A2...An,你现在要求修改数量最少的元素,使得这个数列严格递增.其中无论是修改前还是修改后,每个元 ...

  7. POJ3498最大流,枚举终点,企鹅,基础最大流

    题意:       有一n个冰块,每个冰块上都有一些企鹅,所有的企鹅要跳到一个冰块上去,但是由于起跳是的后坐力原因导致每个冰块最多条mi次,最后问你所有的企鹅都跳到一个冰块上去的那块冰块可以是哪一块, ...

  8. IIS6目录解析漏洞的实验

    ​​​​​​​​​​Windows 打开IIS管理器的方式 这个是网站IIS网站目录 右击默认网站中的属性,可以查看网站的属性,比如网站根目录,或者是端口 这个是网站的目录C:\www,有三个文件分别 ...

  9. LA3027简单带权并查集

    题意:       有n个点,一开始大家都是独立的点,然后给出一些关系,a,b表示a是b的父亲节点,距离是abs(a-b)%1000,然后有一些询问,每次询问一个节点a到父亲节点的距离是多少? 思路: ...

  10. 四次挥手中你还不知道的ACK机制

    为面试做准备中. 后面有对ACK机制的详细讲解. 四次挥手比较好解释. 看一下我的草图. ACK表示发来的数据已确认接收无误. 图中一个箭头代表一次挥手. 第一次挥手: 主动关闭方:发送一个FIN,表 ...