问题描述
我一直在做Python难题,而我一直在做的是使用并发函数来解决Python中的Kempner函数。
应用于复合数的Kempner函数允许找到大于零的最小整数,阶乘将精确地除以该数。
例如:
kempner(6)➞3
1! = 1%6> 0
2! = 2%6> 0
3! = 6%6 === 0
肯纳(10)➞5
1! = 1%10> 0
2! = 2%10> 0
3! = 6%10> 0
4! = 24%10> 0
5! = 120%10 === 0
执行此操作的方法多种多样,我见过的解决方案之一是:
def kempner(n,i=1,total=1):
if total % n == 0:
return max(1,i-1)
else:
return kempner(n,i+1,total*i)
我了解这是做什么的要点,但是当我通过调试模式运行它并查看变量在做什么时,我可以看到在达到基本条件(if total % n ==0
)和{{1}时返回},然后return max(1,i-1)
子句中的所有内容将继续运行,直到函数返回其起始状态为止(例如,对于else
,然后是kempner(10)
,n = 10
,{{1} })。为什么这样做呢?如果已经达到基本条件,是否应该停止复发?
这是一个相当抽象的问题,显然是我所知的盲点。如果有人有任何见识,我将不胜感激。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)