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