Go 语言递归函数

递归,就是在运行的过程中调用自己。

语法格式如下:

func recursion() {

recursion() /* 函数调用自身 */

}

func main() {

recursion()

}

Go 语言支持递归。但我们在使用递归时,开发者需要设置退出条件,否则递归将陷入无限循环中。

递归函数对于解决数学上的问题是非常有用的,就像计算阶乘,生成斐波那契数列等。

阶乘

以下实例通过 Go 语言的递归函数实例阶乘:

package main

import "fmt"

func Factorial(x int) (result int) {

if x == 0 {

result = 1;

} else {

result = x * Factorial(x - 1);

}

return;

}

func main() {

var i int = 15

fmt.Printf("%d 的阶乘是 %d\n", i, Factorial(i))

}

以上实例执行输出结果为:

15 的阶乘是 1307674368000

斐波那契数列

以下实例通过 Go 语言的递归函数实现斐波那契数列:

package main

import "fmt"

func fibonaci(n int) int {

if n < 2 {

return n

}

return fibonaci(n-2) + fibonaci(n-1)

}

func main() {

var i int

for i = 0; i < 10; i++ {

fmt.Printf("%d\t", fibonaci(i))

}

}

以上实例执行输出结果为:

0 1 1 2 3 5 8 13 21 34

原文发布于微信公众号 - Golang语言社区(Golangweb)

原文发表时间:2017-05-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏芋道源码1024

【死磕 Java 并发】—– J.U.C 之 Java并发容器:ConcurrentHashMap

HashMap是我们用得非常频繁的一个集合,但是由于它是非线程安全的,在多线程环境下,put操作是有可能产生死循环的,导致CPU利用率接近100%。为了解决该问...

1242
来自专栏用户画像

C++实现斐波那契数列

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而...

591
来自专栏码匠的流水账

聊聊storm TridentTopology的构建

storm-core-1.2.2-sources.jar!/org/apache/storm/trident/TridentTopology.java

1863
来自专栏Fish

蓝桥杯 幸运数

先说题意。题意有点长,我还是复制粘贴吧。。。 问题描述 幸运数是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法”生成。 首先从1开始写出自然数1,...

3336
来自专栏码匠的流水账

聊聊eureka client的fetch-remote-regions-registry属性

本文主要研究一下eureka client的fetch-remote-regions-registry属性

1561
来自专栏五分钟学算法

LeeCode题目图解

There is an English version of README here. just click it!

1662
来自专栏更流畅、简洁的软件开发方式

[自定义服务器控件] 第三步:CheckBoxList。

前面发了文本框和下拉列表框的,这回发一个CheckBoxList。不知道中文名字该叫什么。 CheckBoxList 最郁闷的地方就是:明明可以选择多个选项,但...

2286
来自专栏小樱的经验随笔

POJ 2492 A Bug's Life

A Bug's Life Time Limit: 10000MS Memory Limit: 65536K Total Submissions:...

29110
来自专栏葡萄城控件技术团队

深入浅出OOP(五): C#访问修饰符(Public/Private/Protected/Internal/Sealed/Constants)

访问修饰符(或者叫访问控制符)是面向对象语言的特性之一,用于对类、类成员函数、类成员变量进行访问控制。同时,访问控制符也是语法保留关键字,用于封装组件。 Pub...

3299
来自专栏码匠的流水账

聊聊eureka的preferSameZoneEureka参数

spring-cloud-netflix-eureka-client-2.0.0.RC1-sources.jar!/org/springframework/cl...

1621

扫码关注云+社区

领取腾讯云代金券