目前正在解决和学习DSA。我正在使用 Coding Ninjas 来学习 DSA 并解决问题。
所以我的问题是以下代码有什么区别?
def mul(m, n):
if m ==0 or n == 0:
return 0
return m * n
和
def mul(m, n):
if m == 0 or n == 0:
return 0
return m + mul(m, n - 1)
每当我使用第二个代码提交解决方案时,它都会显示有一个问题 1 测试用例失败,其余 5 个完成,而对于第一个代码,它完全是 100% 正确。
默认情况下,Python 的递归限制是
1000
,当 n >= 999
时你就会遇到这个问题。为了防止这种情况,请添加额外的 if
检查。
def mul(m, n):
if m == 0 or n == 0:
return 0
if n == 1:
return m
return m + m + mul(m, n - 2)
这会以 2 的步长递归,因此当
n = 1000
时,它只会递归 500 次。