gpt4 book ai didi

python - 仅使用加法和减法求两个数的乘积?

转载 作者:太空宇宙 更新时间:2023-11-03 13:25:36 26 4
gpt4 key购买 nike

这是我的问题陈述。给定两个整数 m 和 n,使用递归计算并返回它们的乘积。您只能使用减法和加法进行计算。不允许使用其他运算符(operator)。

这是我的方法。

def mult(m,n):
if m == 0 or n == 0:
return 0
if n == 1:
return m
if m == 1:
return n
if m < 0 and n < 0:
return mult(-m, -n)
if n < 0:
return -mult(m, -n)
if m < 0:
return -mult(-m, n)
return m + mult(m, n - 1)

m = int(input())
n = int(input())
print (mult(m, n))

其中一个测试用例显示运行时错误。有人可以告诉我我的代码有什么问题吗?我还处理了负值。

Runtime Error
Traceback (most recent call last): File Main.py , line 18, in <module> print (mult(m, n))
File Main.py , line 14, in mult return m + mult(m, n - 1)
File Main.py , line 14, in mult return m + mult(m, n - 1)
File Main.py , line 14, in mult return m + mult(m, n - 1)
File Main.py , line 14, in mult return m + mult(m, n - 1)
File Main.py , line 14, in mult return m + mult(m, n - 1)
File Main.py , line 14, in mult return m + mult(m, n - 1)

最佳答案

我针对多个输入测试了您的脚本,发现它不适用于更高的数字。例如,它不适用于 m,n (3412 * 3412)。这是因为在您的代码中交叉了 python 中默认为 1000 的递归深度。

要增加 python 中的递归深度,请按照以下步骤操作:

1) 在你的脚本中导入 sys 模块

2) 在脚本的开头输入:

 sys.setrecursionlimit(1500)

这会将默认限制 (1000) 增加到 1500。

注意:虽然它适用于您的代码达到一定数量,但这不是一个好的解决方案。你需要改进你的代码。

希望对您有所帮助。

关于python - 仅使用加法和减法求两个数的乘积?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56683293/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com