GO语言复合类型05---递归
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---递归的更多相关文章
- GO语言复合类型04---映射
package main import "fmt" /* 映射(map)是键值对(key-value)数据的集合 根据键key可以快速检索值value 键值的类型可以是任意的,ke ...
- GO语言复合类型03---切片
切片相当于长度可以动态扩张的数组 array[start:end]从数组身上截取下标为[start,end)片段,形成切片start代表开始下标,不写默认代表从头开始切end代表结束下标(本身不被包含 ...
- GO语言复合类型02---数组
package main import "fmt" /* 固定长度.固定类型的数据容器 */ /*数组的声明*/ func main031() { //var array [5]i ...
- GO语言复合类型01---指针
package main /* %T 类型占位符 %v 值占位符 %p 地址(指针)占位符,只有地址才能替换%p &value 对值取地址 *addr 对地址取值 **int 指向int型指针 ...
- go语言 类型:基础类型和复合类型
Go 语言中包括以下内置基础类型:布尔型:bool整型:int int64 int32 int16 int8 uint8(byte) uint16 uint32 uint64 uint浮点型:floa ...
- 带你学够浪:Go语言基础系列 - 8分钟学复合类型
★ 文章每周持续更新,原创不易,「三连」让更多人看到是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) " 对于一般的语言使用者来说 ,20% ...
- C语言中的复合类型
复合类型 一.掌握的类型 1. 指针数组 int * arr[10]; //arr是一个数组,有10个元素,每个元素都是一个指针,即arr是一个指针数组 int a,b,c,d; arr[0] = & ...
- struts复合类型传值(对象传值)
01:导包,配置web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version ...
- postgresql 函数 参数为复合类型
postgresql没有存储过程,但是函数功能很强大. 在近期开发的电商管理平台中,对于产品的类目管理,设计时有个属性字段,设为字符数组,但是EF不支持数组的操作,所以在添加和修改类目时,需要对属性的 ...
随机推荐
- TypeScript 入门自学笔记 — 类型断言(二)
码文不易,转载请带上本文链接,感谢~ https://www.cnblogs.com/echoyya/p/14558034.html 目录 码文不易,转载请带上本文链接,感谢~ https://www ...
- 也谈如何写一个Webserver(-)
关于如何写一个Webserver,很多大咖都发表过类似的文章.趁着这个五一假期,我也来凑个份子. 我写Webserver的原因,还得从如何将http协议传送的消息解析说起.当时,我只是想了解一下htt ...
- 小白学PID-以大疆M3508、M2006为例
前言: 最近用到了大疆的直流无刷(BLDC)减速电机M3508和M2006.做RoboMaster比赛的同学应该对它们很熟悉,这两款电机质量都不错,配套电调C620.C610功能强大,应用场景广泛.当 ...
- UC-Android逆向工程师面试第2题分析
博客链接:http://blog.csdn.net/qq1084283172/article/details/52133172 一.简介 这个题目是别人面试UC优视集团Android逆向工程师一职位的 ...
- POJ1258最小生成树简单题
题意: 给你个图,让你求一颗最小生成树. 思路: 裸题,克鲁斯卡尔或者普利姆都行. #include<stdio.h> #include<algorithm&g ...
- CVE-2018-0798:Microsoft office 公式编辑器 Matrix record 字段栈溢出漏洞调试分析
\x01 前言 2018 年 1 月 9 日,Office 公式编辑器再曝出新漏洞,编号为 CVE-2018-0798.提起公式编辑器大家都不陌生,之前的 CVE-2017-11882 和 CVE-2 ...
- canvas绘制虚线图表
最近有读者加我微信咨询这个问题,如下图所示: 要实现的效果如下: 其实难度不大,但是考虑一些人员对于canvas不熟悉,还是简单的介绍下. 其实该图表,就是一个圆圈外面在套一个圆弧的效果, 主要的难点 ...
- 【vue】报错This dependency was not found
报错 ERROR Failed to compile with 1 errors 10:33:34 ├F10: PM┤ This dependency was not found: * @/views ...
- windows下使用dos命令手工与ntp服务器同步系统时间
管理员模式的命令窗口 net stop w32time &w32tm /unregister &w32tm /register &net start w32time & ...
- 【技术博客】忘记密码界面的Vue前端实现
一.基本流程 [登录界面] --> [点击忘记密码] --> [输入个人邮箱和验证码] --> [系统发送邮箱验证] --> [用户在限定时间内登录邮箱,查收验证码] --&g ...