以下代码有什么区别?

问题描述 投票:0回答:1

目前正在解决和学习DSA。我正在使用 Coding Ninjas 来学习 DSA 并解决问题。

This is the question.

所以我的问题是以下代码有什么区别?

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 algorithm addition multiplication
1个回答
0
投票

默认情况下,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 次。

© www.soinside.com 2019 - 2024. All rights reserved.