![]() |
1
9
在递归情况下,prime\u factorize函数没有return语句——您希望在其最后一行调用“returnprime\u factorize(x/i,li)”。用一个素数试试(这样就不需要递归调用),看看它在这种情况下是否有效。 此外,您可能希望使签名类似于:
否则,两次或多次调用时会得到错误的结果:
|
![]() |
2
9
|
![]() |
3
3
@Anthony正确地回答了你关于
这并没有解决关键的性能问题(big-O行为与原始解决方案相同)——但由于Python本身不进行尾部递归优化,因此学习手动执行非常重要。
这个公式将是一个很好的基础,从中可以应用进一步的优化重构(sqrt避免、记忆化等),以达到更好的性能。 |
![]() |
4
2
|
![]() |
5
0
好吗。 |
![]() |
6
0
查看此代码 |