【GO】简单递归案例实现求斐波那契数列和自然值求和

简介: 【GO】简单递归案例实现求斐波那契数列和自然值求和

斐波那契数

先看一个案例就可以肯明确的看出其中的规律

1 ,1 ,2 , 3 , 5 , 8 , 13…

其实就是除了第0项和第1项返回的是1,其余的返回的都是前俩项之和


用递归实现斐波那契数列

package main
import "fmt"
func main() {
  for i := 0; i <= 10; i++ {
    fmt.Println(GetFibonacci(i))
  }
}
/**
递归就是自己调自己
递归一定要有终止条件,否则就会无限循环
*/
func GetFibonacci(n int) int {
  // 如果是第0项或者第2项直接返回1
  if n == 0 || n == 1 {
    return 1
  } else {
    return GetFibonacci(n-1) + GetFibonacci(n-2)
  }
}

屏幕快照 2022-05-18 下午11.23.56.png

/**
使用循环来实现自然数之和
*/
package main
import "fmt"
func main() {
  fmt.Println(GetFibonacci(6))
  sum := GetNum(10)
  fmt.Println(sum)
}
func GetNum(n int) (sum int) {
  for i := 1; i <= n; i++ {
    sum += i
  }
  return
}

使用递归来实现自然数求和

/**
使用递归来实现自然数求和
*/
package main
import "fmt"
func main() {
  getRecursion := GetRecursion(10)
  fmt.Println(getRecursion)
}
func GetRecursion(n int) (sum int) {
  if n == 1 {
    return 1
  } else {
    return n + GetRecursion(n-1)
  }
}

本篇文章所有的源码,可直接执行

package main
import "fmt"
func main() {
  fmt.Println(GetFibonacci(6))
  sum := GetNum(10)
  fmt.Println(sum)
  getRecursion := GetRecursion(10)
  fmt.Println(getRecursion)
}
/**
递归就是自己调自己
递归一定要有终止条件,否则就会无限循环
*/
func GetFibonacci(n int) int {
  // 如果是第0项或者第2项直接返回1
  if n == 0 || n == 1 {
    return 1
  } else {
    return GetFibonacci(n-1) + GetFibonacci(n-2)
  }
}
/**
使用循环来实现自然数之和
*/
func GetNum(n int) (sum int) {
  for i := 1; i <= n; i++ {
    sum += i
  }
  return
}
/**
使用递归来实现自然数求和
*/
func GetRecursion(n int) (sum int) {
  if n == 1 {
    return 1
  } else {
    return n + GetRecursion(n-1)
  }
}

屏幕快照 2022-05-18 下午11.24.49.png

相关文章
|
7月前
|
存储 消息中间件 大数据
Go语言在大数据处理中的实际应用与案例分析
【2月更文挑战第22天】本文深入探讨了Go语言在大数据处理中的实际应用,通过案例分析展示了Go语言在处理大数据时的优势和实践效果。文章首先介绍了大数据处理的挑战与需求,然后详细分析了Go语言在大数据处理中的适用性和核心技术,最后通过具体案例展示了Go语言在大数据处理中的实际应用。
|
7月前
|
负载均衡 算法 数据库连接
Go语言性能优化实践:案例分析与解决方案
【2月更文挑战第18天】本文将通过具体的案例分析,探讨Go语言性能优化的实践方法和解决方案。我们将分析几个典型的性能瓶颈问题,并详细介绍如何通过优化代码、调整并发模型、改进内存管理等方式来提升程序的性能。通过本文的学习,读者将能够掌握一些实用的Go语言性能优化技巧,为实际项目开发中的性能优化工作提供指导。
|
存储 编译器 Go
Go 语言内存逃逸案例
Go 语言内存逃逸案例
58 0
|
Go 索引
案例实战:Go语言for range遍历经典应用场景
案例实战:Go语言for range遍历经典应用场景
103 0
|
3月前
|
Shell Go API
Go语言grequests库并发请求的实战案例
Go语言grequests库并发请求的实战案例
|
25天前
|
安全 Go 开发者
代码之美:Go语言并发编程的优雅实现与案例分析
【10月更文挑战第28天】Go语言自2009年发布以来,凭借简洁的语法、高效的性能和原生的并发支持,赢得了众多开发者的青睐。本文通过两个案例,分别展示了如何使用goroutine和channel实现并发下载网页和构建并发Web服务器,深入探讨了Go语言并发编程的优雅实现。
33 2
|
7月前
|
SQL 机器学习/深度学习 缓存
Go语言Web应用实战与案例分析
【2月更文挑战第21天】本文将通过实战案例的方式,深入探讨Go语言在Web应用开发中的应用。我们将分析一个实际项目的开发过程,展示Go语言在构建高性能、可扩展Web应用方面的优势,并分享在开发过程中遇到的问题和解决方案,为读者提供宝贵的实战经验。
|
7月前
|
Kubernetes Go 开发者
Go语言与Docker容器结合的实践应用与案例分析
【2月更文挑战第23天】本文通过分析实际案例,探讨了Go语言与Docker容器技术结合的实践应用。通过详细阐述Go语言在容器化环境中的开发优势,以及Docker容器技术在Go应用部署中的重要作用,本文旨在为读者提供Go语言与Docker容器结合的具体实现方法和实际应用场景。
|
7月前
|
设计模式 Java Go
Go语言高级面向对象编程技巧与实战案例
【2月更文挑战第10天】本文将深入探讨Go语言中的高级面向对象编程技巧,并通过实战案例展示如何应用这些技巧解决实际问题。我们将了解如何使用设计模式、测试与调试面向对象程序、性能优化与内存管理等高级话题,以提升Go语言编程的水平和代码质量。
|
监控 NoSQL Go
GO 中 ETCD 的编码案例分享
GO 中 ETCD 的编码案例分享