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不支持数组的操作,所以在添加和修改类目时,需要对属性的 ...
随机推荐
- 『动善时』JMeter基础 — 1、JMeter介绍
1.什么是JMeter Apache JMeter是Apache组织开发的基于Java的压力测试工具,用于对软件做压力测试.它最初被设计用于Web应用测试,但后来扩展到其他测试领域. (Apache ...
- 1- java语言特性
Java概述 Java是面向对象程序设计语言和Java平台的总称 Java体系 JavaSE(j2se)(标准版) JavaEE(J2ee)(企业版) JavaME(J2me) 面向对象 面向对象是J ...
- 【目录】python全栈工程师
第一阶段:Python 语言核心编程1. Python核心 -- 2048 游戏核心算法2. 面向对象 -- 天龙八部游戏技能系统3. Python高级 -- 集成操作框架项目:2048游 ...
- Android so加固的简单脱壳
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78077603 Android应用的so库文件的加固一直存在,也比较常见,特地花时间 ...
- Tomcat管理弱口令页面Getshell
目录 弱口令Getshell 利用Burpsuite对tomcat账号密码进行爆破 弱口令Getshell Tomcat安装完成后会有如下页面,点击该页面的 Manager App 处会弹出输入用户名 ...
- WindowsPE 第五章 导出表编程-1(枚举导出表)
导出表编程-1-枚举导出表 开始前先回忆一下导出表: 1.枚举dll函数的导出函数名字: 思路: (1)加载dll到内存里. (2)获取PE头,逐步找到可选头部. (3)然后找到里面的第一个结构(导出 ...
- Intel汇编语言程序设计学习-第五章 过程-上
过程 5.1 简介 需要阅读本章的理由可能很多: 1.读者可能想要学习如何在汇编语言中进行输入输出. 2.应该了解运行时栈(runtime stack),运行时栈是子过程(函数)调用以及从子过程返回 ...
- Android开机时间分析
http://blog.csdn.net/huangyabin001/article/details/42777703
- 删除自定义服务 寒江孤钓<<windows 内核安全编程>> 学习笔记
书中第一章 成功启动first服务之后, 发现书中并没有介绍删除服务的方式, SRVINSTW工具中的移除服务功能,也无法找到我们要删除的服务, 于是,搜素了下,发现解决方法如下: 在cmd中输入 & ...
- 【python】Leetcode每日一题-扰乱字符串
[python]Leetcode每日一题-扰乱字符串 [题目描述] 使用下面描述的算法可以扰乱字符串 s 得到字符串 t : 如果字符串的长度为 1 ,算法停止 如果字符串的长度 > 1 ,执行 ...