Python 中递归的乘法函数
Multiplication function with recursion in Python
我需要编写函数 mult( n, m ) 来输出两个整数 n 和 m 的乘积。我仅限于使用 addition/subtraction/negation 运算符以及递归。
这是我目前所拥有的:
def mult( n, m ):
if m == 0:
return 0
elif m < 0:
return n - n(m+1)
else:
return n + n(m-1)
谁能帮帮我,因为我想不通!
你试图在你的 elif
和 else
块中调用 n(m+1)
,因为你说 n
是一个整数,这就是问题所在,你应该是调用 mult()
函数递归地发送 n
和 m+1
或 m-1
作为参数。
另一个问题是,你应该在返回之前将n - mult(n, m+1)
的结果转换为负数。
例子-
...
return - (n - mult(n, m+1))
else:
return n + mult(n, m-1)
带有示例更改的演示 -
>>> mult(5,-3)
-15
>>> mult(-10,-3)
30
>>> mult(5,3)
15
递归意味着,你必须调用函数本身
def mul(a, b):
def _mul(a, b, c=1):
if a<c:
return a, 0
a, r = _mul(a, b + b, c + c)
return (a - c, r + b) if a >= c else (a,r)
return (_mul(a, b) if a<b else _mul(b, a))[1]
最简单的python写法使用递归:
def mult(a, b):
if a == 0:
return 0
elif a == 1:
return b
else:
return b + mult(a-1, b)
代码:
def mult(a, b):
if a == 0 or b == 0:
return 0
else:
if a < 0 and b > 0:
return a + mult(a, b - 1)
elif a < 0 and b < 0:
return -b + mult(-a - 1, -b)
else:
return b + mult(a - 1, b)
测试:
def test():
x1 = mult(5, 3)
x2 = mult(6, -3)
x3 = mult(-3, 3)
x4 = mult(-3, -33)
print('5 * 3 = ', x1)
print('6 * -3 = ', x2)
print('-3 * 3 = ', x3)
print('3 * -33 = ', x4)
test()
Python中的递归乘法:
def multiplication(num_a, num_b):
if num_a == 0 or num_b == 0:
return 0
return num_a + multiplication(num_a, num_b - 1)
我能想到的最简洁的代码可以解释任一数字的负数:
def prod(m,n):
if n==0 or m==0:
return 0
elif n<0:
return -m+prod(m,n+1)
else:
return m+prod(m,n-1)
我需要编写函数 mult( n, m ) 来输出两个整数 n 和 m 的乘积。我仅限于使用 addition/subtraction/negation 运算符以及递归。
这是我目前所拥有的:
def mult( n, m ):
if m == 0:
return 0
elif m < 0:
return n - n(m+1)
else:
return n + n(m-1)
谁能帮帮我,因为我想不通!
你试图在你的 elif
和 else
块中调用 n(m+1)
,因为你说 n
是一个整数,这就是问题所在,你应该是调用 mult()
函数递归地发送 n
和 m+1
或 m-1
作为参数。
另一个问题是,你应该在返回之前将n - mult(n, m+1)
的结果转换为负数。
例子-
...
return - (n - mult(n, m+1))
else:
return n + mult(n, m-1)
带有示例更改的演示 -
>>> mult(5,-3)
-15
>>> mult(-10,-3)
30
>>> mult(5,3)
15
递归意味着,你必须调用函数本身
def mul(a, b):
def _mul(a, b, c=1):
if a<c:
return a, 0
a, r = _mul(a, b + b, c + c)
return (a - c, r + b) if a >= c else (a,r)
return (_mul(a, b) if a<b else _mul(b, a))[1]
最简单的python写法使用递归:
def mult(a, b):
if a == 0:
return 0
elif a == 1:
return b
else:
return b + mult(a-1, b)
代码:
def mult(a, b):
if a == 0 or b == 0:
return 0
else:
if a < 0 and b > 0:
return a + mult(a, b - 1)
elif a < 0 and b < 0:
return -b + mult(-a - 1, -b)
else:
return b + mult(a - 1, b)
测试:
def test():
x1 = mult(5, 3)
x2 = mult(6, -3)
x3 = mult(-3, 3)
x4 = mult(-3, -33)
print('5 * 3 = ', x1)
print('6 * -3 = ', x2)
print('-3 * 3 = ', x3)
print('3 * -33 = ', x4)
test()
Python中的递归乘法:
def multiplication(num_a, num_b):
if num_a == 0 or num_b == 0:
return 0
return num_a + multiplication(num_a, num_b - 1)
我能想到的最简洁的代码可以解释任一数字的负数:
def prod(m,n):
if n==0 or m==0:
return 0
elif n<0:
return -m+prod(m,n+1)
else:
return m+prod(m,n-1)