如何实现单参数递归函数判断输入整数是否为某个数的阶乘
递归实现方案
你可以通过嵌套辅助递归函数的方式实现,和你原有迭代版的逻辑完全对齐,不需要硬编码特殊值,也符合仅接受一个整数输入的要求,实现代码如下:
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的输入直接返回False,不存在对应整数阶乘
- 辅助递归函数维护两个状态值,和你原有迭代版的
i(当前乘数)、f(当前阶乘值)作用完全一致 - 递归终止条件:
- 当前阶乘值等于目标值,返回True
- 当前阶乘值已经超过目标值,不可能再匹配成功,返回False
- 阶乘数值增长极快,20!已经达到2432902008176640000,递归深度最多仅为20层,完全不会出现栈溢出问题
测试用例参考
isFactorial(1)→True(对应0!、1!)isFactorial(6)→True(对应3!)isFactorial(720)→True(对应6!)isFactorial(10)→FalseisFactorial(0)→FalseisFactorial(-3)→False
内容的提问来源于stack exchange,提问作者Bárbara Peres
相关产品推荐
相关产品推荐

