You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现单参数递归函数判断输入整数是否为某个数的阶乘

递归实现方案

你可以通过嵌套辅助递归函数的方式实现,和你原有迭代版的逻辑完全对齐,不需要硬编码特殊值,也符合仅接受一个整数输入的要求,实现代码如下:

def isFactorial(m):
    # 边界处理:所有整数的阶乘结果都不小于1
    if m < 1:
        return False
    
    # 递归辅助函数:current为当前乘数,current_fact为对应阶乘值
    def recursive_check(current, current_fact):
        if current_fact == m:
            return True
        if current_fact > m:
            return False
        return recursive_check(current + 1, current_fact * (current + 1))
    
    # 从1! = 1开始校验
    return recursive_check(1, 1)

逻辑说明

  1. 先做输入合法性校验,小于1的输入直接返回False,不存在对应整数阶乘
  2. 辅助递归函数维护两个状态值,和你原有迭代版的i(当前乘数)、f(当前阶乘值)作用完全一致
  3. 递归终止条件:
    • 当前阶乘值等于目标值,返回True
    • 当前阶乘值已经超过目标值,不可能再匹配成功,返回False
  4. 阶乘数值增长极快,20!已经达到2432902008176640000,递归深度最多仅为20层,完全不会出现栈溢出问题

测试用例参考

  • isFactorial(1) → True(对应0!、1!)
  • isFactorial(6) → True(对应3!)
  • isFactorial(720) → True(对应6!)
  • isFactorial(10) → False
  • isFactorial(0) → False
  • isFactorial(-3) → False

内容的提问来源于stack exchange,提问作者Bárbara Peres

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 22:36:02