Python 递归求解基本乘法
我应该写一个函数,找到给定数量的狗需要的鞋子数量。乘法很容易实现,但我们需要使用递归,所以我有Python 递归求解基本乘法,python,recursion,jython,multiplication,Python,Recursion,Jython,Multiplication,我应该写一个函数,找到给定数量的狗需要的鞋子数量。乘法很容易实现,但我们需要使用递归,所以我有 def dogShoes(n): total = 0 if n>0: shoes = n + dogShoes(n) total = total + 1 if total == 4: return shoes 但我现在意识到第4行将走向无穷远,而我认为会停止它的底部部分甚至不会被实现。当total为4时
def dogShoes(n):
total = 0
if n>0:
shoes = n + dogShoes(n)
total = total + 1
if total == 4:
return shoes
但我现在意识到第4行将走向无穷远,而我认为会停止它的底部部分甚至不会被实现。当
total
为4
时,是否有一种方法可以说明,停止并返回答案,而不必将的值推向无穷大?您可以大大简化您的函数:
def dogShoes(n):
if n == 0:
return 0
else:
return 4 + dogShoes(n-1)
由于您必须使用递归,而不仅仅是返回n*4
,因此您可以简单地将乘法重写为加法(递归)
多么奇怪的任务…您递归调用函数,但从不更改参数,从而产生无限递归。尝试:
>>> def dog_shoes(n):
... if n > 0:
... return 4 + dog_shoes(n-1)
... else:
... return 0
...
>>> dog_shoes(1)
4
>>> dog_shoes(2)
8
>>> dog_shoes(3)
12
下面是一个简单的乘法函数,使用两个参数的Python递归
Mul(3,3)
>>>9
这是我见过的学习递归最奇怪的方法。你能用循环吗?如果是这样的话,请这样做。@ElliotRoberts“但我们必须使用递归”对,很抱歉。回答类似的问题可能有助于更好地理解递归。您的代码不适用于。@wim savage comment为savage@wim好吧,回到绘图板上来。我们需要更多的数学(或更多的腿)
Mul(3,3)
>>>9