切片的课堂练习 | 学习笔记

简介: 简介:快速学习切片的课堂练习

开发者学堂课程【Go 语言核心编程 - 基础语法、数组、切片、Map :切片的课堂练习】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/625/detail/9644


切片的课堂练习

 

内容介绍

一、练习要求

二、思路分析和代码

三、测试


一、练习要求

说明:编写一个函数 fbn(n int),要求完成

1可以接收一个 n int

2能够将斐波那契的数列放到切片中,就是说每一个斐波那契都放到数列中,不是求最后一个。

3提示斐波那契的数列形式:

arr[0]=1; arr[1]=1; arr[2]=2; arr[3] =3; arr[4]=5; arr[5]=8

规律为当前数值等于前两个数值之和,这里之所以要用切片完成,不用数组是因为数组在声明数组的时候,数组大小就要确定下来,但是切片可以在make的时候传一个变量进去,进行分配空间,所以这里用切片是最合适的。

 

二、思路分析和代码

首先新建文件夹 fbnexecrise,再新建文件 main.go,定义一个主函数,代码如下:

package main

import (

fmt"

func main() {

}

下面开始分析思路。

1、首先要声明一个函数 fbn(n int),可以接收整数 int,然后要想把接收的放到数列里面,就只有返回切片是最合适的,因此这里返回一个切片,又因为斐波那契数会越变越大,所以要给他一个能存放最大值的数据类型 uint64

2、在编写函数 fbn(n int)时,要注意要求是将所有的斐波那契都放到数列中,所以可以进行 for 循环来存放斐波那契数列,就是一个 for 循环后所有的斐波那契都放到数列中,但这里有一个特例0,0对应的斐波那契1,1对应的斐波那契是1。

开始编写代码,首先要将所有的斐波那契都放到数列中就要声明一个切片,切片大小为 n,因为传入的是 n,那肯定就有n个斐波那契数。所以声明切片为 fbnSlice,然后直接 make,make 时存放数据类型为uint64,大小为n,这里需要注意当下标为0时对应的斐波那契数为1,如 arr[0]=1,创建完成后继续,这里已经知道第一个数和第二个斐波那契数,所以这里可以直接写出这两个固定的斐波那契数,当知道第一个为1,第二个也为1时编写代码为 fbnSlice[0]=1,fbnSlice[1]=1,而其他的就用for循环来存放斐波那契数列。for 循环i初始值为2,i小于 n,因为这里第n个就是最后一个,是不能有的,因为n代表的是斐波那契切片的大小,实际上最大的下标是n-1,所以这里是i<n,再进行i++。

然后现在的 fbnSlice[i] 等于前面两个斐波拉契数 fbnSlice[i-1]加上 fbnSlice [i-2]的和,这就是 for 循环的存放。写完后返回切片 return fbnSlice,因为他是引用类型,所以返回去的就是函数里面已经计算好的。

代码如下:
func fbn(n int) ([ ]uint64) {

//声明一个切片,切片大小 n

fbnSlice := make([ ]uint64, n)

//第一个数和第一个数的斐波那契为1

fbnSlice[0] = 1

fbnSlice[1] = 1

//进行for循环来存放斐波那契的数列

for i:=2; i<n; i++{

fbnSlice[i] = fbnSlice[i-1]+ fbnSlice[i-2]

}

return fbnSlice

}

 

三、测试

调用 fbn()传入参数为10,此时作为接收的是 fbnSlice,相当于把10传进去,要求10个斐波拉契数,然后返回给一个变量接收,这里接收变量为切片。最后再进行输出斐波拉契数,如果输出的数就是[1 1 2 3 5 8 13…],说明代码编写正确,如果不是就有问题。

代码为:

func main(){

fnbSlice := fbn(10)

fmt.Println(" fnbSlice=", fnbSlice)

运行结果:

D:\goproject\src\go_code>cd chapter07>cd fbnexercise

D:\goproject\src\go_code\chapter07\fbnexercise>go run main .go

fnbSlice-[1 1 2 3 5 8 13 21 34 55]

观察结果发现没问题,运行成功。

如果想要更多的斐波拉契数可以把10改为20,此时运行结果仍然没问题,如,

[1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765]

这里就是利用了切片可以根据变量大小来分配大小,关键点是 fbn 函数,只有把思路理清楚才能完成这个例题,如果不清楚斐波拉契怎么去存放是完成不了的。

相关文章
【刷题笔记】Day1:操作符的使用和算术转换(上)
【刷题笔记】Day1:操作符的使用和算术转换(上)
|
编译器 C语言 C++
【刷题笔记】Day1:操作符的使用和算术转换(下)
【刷题笔记】Day1:操作符的使用和算术转换(下)
|
8月前
|
机器学习/深度学习 算法 C语言
【编码狂想】深度探索C++编程之旅:“数组、字符串、函数与KMP算法解密“
【编码狂想】深度探索C++编程之旅:“数组、字符串、函数与KMP算法解密“
121 0
|
8月前
|
算法 搜索推荐 C语言
数据结构排序——详解快排及其优化和冒泡排序(c语言实现、附有图片与动图示意)
数据结构排序——详解快排及其优化和冒泡排序(c语言实现、附有图片与动图示意)
75 0
每日一题,数组字符串的匹配问题
每日一题,数组字符串的匹配问题
【基础算法】浅浅刷个小题 # 找不同 # 字符串中的单词数 # 重新排列字符串 #
【基础算法】浅浅刷个小题 # 找不同 # 字符串中的单词数 # 重新排列字符串 #
|
存储 C语言
【C语言程序设计】知识点汇总3——数组、字符串数组、字符串输入输出相关注意事项
【C语言程序设计】知识点汇总3——数组、字符串数组、字符串输入输出相关注意事项
295 0
【C语言程序设计】知识点汇总3——数组、字符串数组、字符串输入输出相关注意事项
|
存储 数据处理 索引
Python编程 字符串介绍以及切片
Python编程 字符串介绍以及切片
110 0
|
Scala 开发者
集合化简的课堂练习 | 学习笔记
快速学习集合化简的课堂练习
|
Java Scala 开发者
函数递归的课堂练习|学习笔记
快速学习函数递归的课堂练习。

热门文章

最新文章