因此,对于python上的编程类的作业,我们应该相互乘以整数(n,m)而不使用*符号(或其他乘法形式)。我们应该使用递归来解决这个问题,所以我尝试只添加n本身,m次。我认为我的问题是使用递归本身。我在互联网上搜索了递归用法,没有结果。这是我的代码。有人能指出我正确的方向吗?
def mult(n,m):
""" mult outputs the product of two integers n and m
input: any numbers
"""
if m > 0:
return n + n
return m - 1
else:
return 1
答案 0 :(得分:1)
我不想在这里给你作业的答案,所以希望我能提供一个可以帮助你的递归的例子:-)。
# Here we define a normal function in python
def count_down(val):
# Next we do some logic, in this case print the value
print(val)
# Now we check for some kind of "exit" condition. In our
# case we want the value to be greater than 1. If our value
# is less than one we do nothing, otherwise we call ourself
# with a new, different value.
if val > 1:
count_down(val-1)
count_down(5)
您如何将此应用于您目前正在进行的工作?也许,而不是打印一些东西,你可以让它返回一些东西......
答案 1 :(得分:0)
您拥有正确的机制,但您尚未内化搜索中找到的基础知识。递归函数通常分为两种情况:
在这里,您已经确定您的基本情况是乘数为0时。此时您想要返回什么?请记住,您将此作为一个加法过程:我相信您需要加性标识元素 0 ,而不是乘法 1 。
在这里,您已经发现想要提高运行总和并将乘数减少1.但是,您还没有再次调用您的函数。你没有适当地增强任何累积金额;你把被乘数增加了一倍。此外,你对递归感到困惑: return 是回到任何调用此函数的东西。对于递归,你会想要像
这样的东西mult(n, m-1)
现在请记住这是一个函数:它返回一个值。现在,你需要用这个值做什么?例如,如果您尝试计算4 * 3,则上述语句将为您提供4 * 2的值,您如何处理该值,以便您可以将4 * 3的正确值返回到任何值叫这个实例?你会想要像
这样的东西result = mult(n, m-1)
return [...] result
...您必须填写 [...] 点。如果需要,可以将它们组合成一行代码;我只是想让你更轻松。
答案 2 :(得分:0)
谢谢你们,我想通了! 我必须返回0而不是1,否则答案总是比我们想要的高一个。 我理解你如何调用这个函数,这是我错过的主要内容。 这就是我所做的:
def mult(n,m):
""" mult outputs the product of two integers n and m
input: any numbers
"""
if m == 0:
return 0
else:
return n + mult(n, m - 1)