MST

星途 面试题库

面试题:Go语言中实现简单的递归函数计算阶乘

请用Go语言编写一个递归函数,用于计算给定整数n的阶乘。并解释递归函数在这个过程中的调用机制和终止条件。
44.9万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import "fmt"

func factorial(n int) int {
    if n == 0 || n == 1 {
        return 1
    }
    return n * factorial(n - 1)
}
  1. 递归函数调用机制
    • 当调用factorial(n)时,如果n既不是0也不是1,函数会调用自身factorial(n - 1)
    • 例如,计算factorial(5),它会计算5 * factorial(4),然后factorial(4)又会计算4 * factorial(3),依此类推,直到factorial(1)
    • 每一次递归调用都会在栈上创建一个新的函数调用帧,包含当前函数的参数和局部变量等信息。
  2. 终止条件
    • n等于0或者1时,函数返回1。这是递归的终止条件,防止函数无限递归调用,导致栈溢出错误。例如当n最终减到1时,factorial(1)返回1,这样factorial(2)就能计算出2 * 1,进而factorial(3)能计算出3 * 2 * 1等,直到计算出factorial(n)的结果。