2016-12-01 36 views
0

我有这样的代码:递归养数量的功率

def power(x, n) 
    if n == 1 
    return x 
    else 
    x = x * power(x, n-1) 
    end 
end 

power(4, 4) 
power(2, 3) 
power(10, 3) 
power(25, 2) 
power(6, 5) 

它以第一号和它提升到第二numberth动力。因此,它适用于所有这些功能,但我想编写代码的方式是打印所有5个功能函数的结果。我该怎么做呢?我试图用put来修改而不是返回,但是我无法让它工作。

+1

我假设你想用递归做这个,但也有其他的方法,比如'x = 2; n = 3; n×reduce(1){| t,_ | v = x * t;放入v; v}#=> 8',在单独的行上打印'2','4','8'。 –

回答

2

您有一个变量x,它指向方法调用的结果。你可以打印这个,然后从函数中返回:

def power(x, n) 
    if n == 1 
    return x 
    else 
    x = x * power(x, n-1) 
    puts x 
    x 
    end 
end 
+0

代码会失败n == 0,并且你忘记删除'puts'(我猜你已经把它放在那里进行测试),但除此之外:为什么要推出一个递归方法,如果可以简单地做一个'x ** n'? – user1934428

+0

这是OPs代码,复制粘贴,添加了'puts',因为指定的问题是目标。我只是想在这里回答这个问题。 –