Go语言 递归函数

Go语言  递归函数

 

引言

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

 

1. 什么是递归函数

2. 数字阶乘

3. 斐波那契数列(Fibonacci)

 

 

 

1. 什么是递归函数

  • 递归,就是在运行的过程中调用自己
  • 一个函数调用自己,就叫做递归函数

构成递归需具备的条件:

1
2
子问题须与原始问题为同样的事,且更为简单;
不能无限制地调用本身,须有个出口,化简为非递归状况处理。

  

2. 数字阶乘

  • 阶乘是基斯顿·卡曼于 1808 年发明的运算符号,是数学术语
  • 一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1
  • 自然数n的阶乘写作n!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package main
 
import "fmt"
 
func factorial(i int) int {
    if i <= 1 {
        return 1
    }
    return i * factorial(i-1)
}
 
func main() {
    var i int = 7
    fmt.Printf("Factorial of %d is %d\n", i, factorial(i))
}
 
 
//输出结果如下:
 
Factorial of 7 is 5040

  

 

3. 斐波那契数列(Fibonacci)

这个数列从第3项开始,每一项都等于前两项之和。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package main
 
import "fmt"
 
func fibonaci(i int) int {
    if i == 0 {
        return 0
    }
    if i == 1 {
        return 1
    }
    return fibonaci(i-1) + fibonaci(i-2)
}
 
func main() {
    var i int
    for i = 0; i < 10; i++ {
        fmt.Printf("%d\n", fibonaci(i))
    }
}
 
//输出结果如下:
0
1
1
2
3
5
8
13
21
34

  

 

posted @   隐姓埋名4869  阅读(60)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示