我试图在不使用循环的情况下产生数字的所有素因子的总和。但是如果prime_factor(m,k)的结果大于2,当在factor = prime_factor(m,k)之后转到main(n)时,因子将为None
def prime_factor(m, k):
if m%k==0:
return k
else:
prime_factor(m, k+1)
def main(n):
if n<2:
return 0
if n==2:
return n
else:
factor=prime_factor(n, 2)
return factor+main(n//factor)
答案 0 :(得分:0)
您的public class Foo
{
public int Val { get; set; }
}
函数没有对递归调用的结果做任何事情。你需要退货:
public class Bar
{
public Foo Reference { get; set; }
}
同样是次要的优化,但你可以调整你的值,所以从3开始,在递归调用中执行prime_factor(m,k + 2)而不是k + 1.