在Python中解决Kempner函数-在达到基本情况后,为什么此并发函数仍继续存在? 例如:

问题描述

我一直在做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 (将#修改为@)