任何人都可以使用python帮助解决这个问题?

时间:2011-04-26 03:18:19

标签: python-3.x

设计一个递归函数,在参数x和y中接受两个参数。该函数应返回x乘以y的值。假设x和y将始终为正非零整数。请记住,乘法可以重复加法执行如下:8 x 7 = 8 + 8 + 8 + 8 + 8 + 8 + 8

def my(x,y):
    if x==0:
        return 0

    else:

        return x*mul(x,x-1)
assertEqual(my(8,7),56)
assertEqual(my(8,5),40)
assertEqual(my(8,2),16)

1 个答案:

答案 0 :(得分:0)

这里有一些伪代码可以解决这个问题:

define mult(x,y):
    if x is zero:
        return zero
    return y plus mult(x-1, y)

现在,因为我一直认为Python是一种理想的伪代码语言,所以它应该很容易转换。递归的想法是根据更简单的操作定义一个操作,并提供一个终止操作。

为了理解这一点,请想象当x为3且y为7时会发生什么。

第一次mult(3,7)x非零,因此结果为y(= 7)加mult(2,7)

对于mult(2,7):结果为y(= 7)加mult(1,7)

对于mult(1,7):结果为y(= 7)加mult(0,7)

对于mult(0,7):由于x为零,结果为零。

按预期,这会为您提供(7 + (7 + (7 + (0))))21