GO语言递归函数、类型转换

Go 语言递归函数

递归是一种函数直接或间接调用自身的编程技术。

递归函数通常包含两个部分:

  1. 基准条件(Base Case):这是递归的终止条件,防止函数无限调用自身。
  2. 递归条件(Recursive Case):这是函数调用自身的部分,用于将问题分解为更小的子问题。

在 Go 语言中,递归的使用与其他语言类似,但需要注意 Go 的一些特性。

语法格式如下:

func recursion() {
   recursion() /* 函数调用自身 */
}

func main() {
   recursion()
}

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

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


阶乘

阶乘是一个正整数的乘积,表示为 n!。例如:

5! = 5 * 4 * 3 * 2 * 1 = 120

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

实例

package main

import "fmt"

// 递归函数计算阶乘
func factorial(n int) int {
    // 基准条件
    if n == 0 {
        return 1
    }
    // 递归条件
    return n * factorial(n-1)
}

func main() {
    fmt.Println(factorial(5)) // 输出: 120
}

代码解释
  1. 基准条件:当 n 等于 0 时,函数返回 1,因为 0! 定义为 1。
  2. 递归条件:函数返回 n 乘以 factorial(n-1) 的结果,逐步将问题分解为更小的子问题。

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

120

斐波那契数列

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

实例

package main

import "fmt"

func fibonacci(n int) int {
  if n < 2 {
   return n
  }
  return fibonacci(n-2) + fibonacci(n-1)
}

func main() {
    var i int
    for i = 0; i < 10; i++ {
       fmt.Printf("%d\t", fibonacci(i))
    }
}

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

0    1    1    2    3    5    8    13    21    34

求平方根

以下实例通过 Go 语言使用递归方法实现求平方根的代码:

实例

package main

import (
        "fmt"
)

func sqrtRecursive(x, guess, prevGuess, epsilon float64) float64 {
        if diff := guess*guess -

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋进学堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值